문제 링크 (opens new window)

# 문제 설명

  1. 팰린드롬 최대길이 문자열 구하는 문제
  2. 문자열 index 기준으로 투포인터 써서 왼쪽 오른쪽으로 문자 계산
  3. O(N^2)시간으로 해결
  4. 팰린드롬 문자열 길이가 짝수인 경우와 홀수인 경우 둘다 고려해야함. abbaaba인 경우 둘다 검사가 필요하므로 코드에서 while문이 두개로 쪼개짐
class Solution {
    func longestPalindrome(_ s: String) -> String {
        var result = ""
        var subString = ""
        var s = Array(s)
        var left = 0
        var right = 0

        for index in 0..<s.count {
            left = index
            right = index

            while(left >= 0 && right < s.count && s[left] == s[right]) {
                left -= 1
                right += 1
            }
            left += 1
            right -= 1

            if right - left + 1 > result.count {
                subString = String(s[left...right])
                result = subString.count > result.count ? subString : result
            }

            left = index
            right = index + 1

            while(left >= 0 && right < s.count && s[left] == s[right]) {
                left -= 1
                right += 1
            }

            left += 1
            right -= 1

            if right - left + 1 > result.count {
                subString = String(s[left...right])
                result = subString.count > result.count ? subString : result
            }
        }
        return result
    }
}