NYOJ308:Substring

Substring

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
 
描述

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 tie-breaker 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
来源
第四届河南省程序设计大赛
#include<iostream>
#include<string>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
 int n,i,j,flag;
  string s1,ss;
    cin>>n;
 string s;
 while(n--)
 {
  cin>>s;
  flag=0;
  for(i=s.length();i>0;i--)
  {
   for(j=0;j+i<=s.length();j++)
   {
       
                 ss=s.substr(j,i);                   /*功能:复制子字符串,要求从指定位置开始,并具有指定的长度。*/
     s1=ss;
                 reverse(s1.begin(),s1.end());//颠倒字符串中字符次序
     if(s.find(s1)!=-1)  {cout<<ss<<endl;flag=1;break;}
   }
   if(flag==1)  break;
  }
 }

 return 0;
}

  

我愿付出努力,只为更好的明天
原文地址:https://www.cnblogs.com/castledrv/p/3660065.html