HDU 1544(Palindromes)

基础题,将原字符串中每一个字符作为回文子串的中心点,按照子串长度为奇数和偶数向两边扩展即可。

#include 
#include 
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;
}

继续加油。

你可能感兴趣的:(HDU,HDU)