问题 F: SUBSTRING

题目描述
You are given a string input. You are to find the longest substring of input such that the reversal of the

substring is also a substring of input. In case of a tie, return the string that occurs earliest in input.

Note well: The substring and its reversal may overlap partially or completely. The entire original string

is itself a valid substring .

The best we can do is find a one character substring, so we implement the tiebreaker rule of taking the

earliest one first.

输入
The first line of input gives a single integer, 1 ≤ N ≤ 10, the number of test cases. Then follow, for each

test case, a line containing between 1 and 50 characters, inclusive. Each character of input will be an

uppercase letter (‘A’-‘Z’).

输出
Output for each test case the longest substring of input such that the reversal of the substring is also a

substring of input

样例输入
3
ABCABA
XYZ
XCVCX

样例输出
ABA
X
XCVCX

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int k,i,j,ls;
	string s,s1,s2,s3;
	cin>>k; getchar();
	while(k--)
	{
		s.clear();
		cin>>s;
		ls=0;
		for(i=0;i<s.size();i++)
		{
			for( j=i+1;j<=s.size();j++)
			{
				s1=s.substr(i,j-i);
				s2=s1;
				reverse(s2.begin(),s2.end());
				if(s.find(s2)!=-1)
				{
					if(s2.size()>ls)
					{
						ls=s2.size();
						s3=s1;
					}
				}
			}
		}
		cout<<s3<<endl;
	}
	return 0;
}
posted @ 2021-05-07 16:32  斯文~  阅读(38)  评论(0)    收藏  举报

你好!