647. 回文子串
解题思路
本题和lc第5
题思路差不多,而且注意,一般寻找回文串 都是用从中心向两端扩大
代码
class Solution {
public int countSubstrings(String s) {
int res=0;
for (int i = 0; i < s.length(); i++) {
//寻找长度为奇数的回文子串
res = res + palindrome(s, i, i);
//寻找长度为偶数的回文子串
res = res + palindrome(s, i, i + 1);
}
return res;
}
//返回以s[l]和s[r]为中心的最长回文子串
public int palindrome(String s, int l, int r) {
int curRes = 0;
while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
//从中间向两端扩散
l--;
r++;
//是回文串,那么长度就加一
curRes++;
}
return curRes;
}
}