PAT 最长对称子串(25)

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

输入样例:

Is PAT&TAP symmetric?

输出样例:

11

思路:分偶对称和奇对称两种,分别遍历找最大对称子链。

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	getline(cin, str);
	int ans = 0;
	int len = str.length();
	int max = 1;
	int a, b;
	for (int i = 0; i < len-1; i++)
	{
		a = i;
		b = i + 1;
		ans = 0;
		while (a >= 0 && b < len&&str[a]==str[b])
		{
				ans += 2;
				a--;
				b++;
	   }
		if (ans > max)
			max = ans;
	}
	for (int i = 1; i < len-1; i++)
	{
		a = i - 1;
		b = i + 1;
		ans = 1;
		while (a >= 0 && b < len&&str[a]==str[b])
		{
		 	ans += 2;
				a--;
				b++;
		}
		if (ans > max)
			max = ans;
	}
	cout << max;
}

猜你喜欢

转载自blog.csdn.net/Fcity_sh/article/details/81475636