Given a string, your task is to count how many palindromic substrings in this string.
The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.
Example 1:
Input: "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".
Example 2:
Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".
Note: The input string length won’t exceed 1000.
算法分析:采取逐个遍历的方法,但是由中间向两端扩展。
void count_palin(char *s, int start, int end, int *count, int len)
{
while(start >= 0 && end < len && s[start] == s[end])
{
(*count)++;
start--;
end++;
}
}
int countSubstrings(char* s) {
int len = strlen(s), i, count = 0;
for(i = 0; i < len; i++)
{
count_palin(s, i, i, &count, len); //考虑长度为奇数
count_palin(s, i, i + 1, &count, len); //考虑长度为偶数
}
return count;
}