LeetCode——回文子串
Q:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。
示例 1:
输入:"abc"
输出:3
解释:三个回文子串: "a", "b", "c"
示例 2:
输入:"aaa"
输出:6
解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
A:
中心扩展
private static int countSubStrings(String s) {
int num = 0;
for (int i = 0; i < s.length(); i++) {
num += numOfPalindrome(s, i, i);//以该点为中点
num += numOfPalindrome(s, i, i + 1);//以该点为左中点
}
return num;
}
private static int numOfPalindrome(String s, int left, int right) {
int count = 0;
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
count++;
left--;
right++;
}
return count;
}