You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.
InputThe first line of the input file contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 <= n <= 100), the number of given strings, followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string. OutputThere should be one line per test case containing the length of the largest string found. Sample Input
23ABCDBCDFFBRCD2roseorchidSample Output
22 这道题和之前一道题类似,都是多个字符串匹配问题,只是这道题多了倒序的匹配。直接reverse就可以了 遍历第一个串的所有后缀,然后匹配每个字符串的正反序。得到公共匹配的最小。然后枚举所有后缀取最大
1 #include2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int _,n,Next[110]; 8 vector t; 9 10 void prekmp(string s) {11 int len=s.size();12 int i,j;13 j=Next[0]=-1;14 i=0;15 while(i >s;50 t.push_back(s);51 }52 string str=t[0],tempstr;53 int len=str.size(),maxx=-1;54 for(int i=0;i