基础题,将原字符串中每一个字符作为回文子串的中心点,按照子串长度为奇数和偶数向两边扩展即可。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
while (cin >> s)
{
int len = s.size();
int ans = 0;
int l, r;
for (int i = 0; i < len; i++)
{
//子串长度为奇数
l = i - 1;
r = i + 1;
while (l >= 0 && r < len && s[l] == s[r])
{
--l;
++r;
++ans;
}
//子串长度为偶数
l = i;
r = i + 1;
while (l >= 0 && r < len && s[l] == s[r])
{
--l;
++r;
++ans;
}
}
cout << ans + len << endl;
}
return 0;
}
继续加油。