647. 回文子串
题目:
给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。
回文字符串 是正着读和倒过来读一样的字符串。
子字符串 是字符串中的由连续字符组成的一个序列。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。
示例 1:
输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"
思路:
判断包含的回文子串的数目。
可以在判断回文串的过程中记录出现的次数。
回文子串判断可以是从(i,i)起始,也可以从(i,i+1)起始。两者统计的子串不同。
class Solution { public: int countSubstrings(string s) { int n=s.size(); int ret=0; for(int i=0;i<n;++i){ ret+=count(i,i,s); ret+=count(i,i+1,s); } return ret; } int count(int i,int j, const string& s){ int ret=0; int n=s.size(); while(i>=0&&j<n){ if(s[i]==s[j]){ ret++; i--; j++; } else{ break; } } return ret; } };