문제 설명

Given a string s, return the number of palindromic substrings in it.

A string is a palindrome when it reads the same backward as forward.

A substring is a contiguous sequence of characters within the string.

Example 1

Input: s = "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".

Example 2:

Input: s = "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa"."

Constraints:

  • 1 <= s.length <= 1000
  • s consists of lowercase English letters.

문제풀이

class Solution {

    var answer = 0
    
    func isPalindromic(_ string: [String], _ i: Int, _ j: Int) -> Void {
        var i = i
        var j = j
        
        while i>=0 && j<string.count {
            if string[i] != string[j] { return }
            
            answer+=1
            i-=1
            j+=1
        }
        return
    }
    
    func countSubstrings(_ s: String) -> Int {
        let strArr = s.compactMap { String($0) }
        
        for i in 0..<strArr.count {
            isPalindromic(strArr, i, i)
            isPalindromic(strArr, i, i+1)
        }
        
        return answer
    }
}

참고 : https://leetcode.com/problems/palindromic-substrings/