NYOJ - Substring

来源:互联网 发布:星图数据监测 编辑:程序博客网 时间:2024/05/16 19:54

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                   ABCABAXYZXCVCX
样例输出
ABAXXCVCX

#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){string s1,s2;int n;cin >> n;while(n--){cin >> s1;s2 = s1;reverse(s2.begin(),s2.end());  // 反转字符串 bool flag = false;for(int i = s1.size(); i > 0; i--)   // 可以从最长字符串遍历 {for(int j = 0; j <= s1.size()-i; j++){string t = s1.substr(j,i);string::size_type pos = s2.find(t);if(pos != string::npos){cout << t << endl;flag = true;break;}}if(flag) break;}}return 0;}

0 0
原创粉丝点击