问题 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;
}
本文来自博客园,作者:斯文~,转载请注明原文链接:https://www.cnblogs.com/zhiweb/p/15483366.html

浙公网安备 33010602011771号