hdu 1238【Substrings】

直接用string类里面的一些函数

先排序,然后用最短的那个字符串的子串跟其他字符串的子串比较。。。

代码如下:
 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 bool cmp(const string& a,const string& b)
 7 {
 8     return a.size() < b.size();
 9 }
10 
11 void inverse(string& aim)
12 {
13     string::size_type size = aim.size(),i = 0;
14     char ch;
15     while(i != size / 2)
16     {
17         ch = aim[i];
18         aim[i] = aim[size - 1 - i];
19         aim[size - 1 - i] = ch;
20         i ++;
21     }
22 }
23 
24 bool search(string a,string& b,int len)
25 {
26     int size = b.size();
27     for(int i = 0;i <= size - len;++ i)
28     {
29         if(!a.compare(0,len,b,i,len))
30             return true;
31     }
32 
33     inverse(a);
34     for(int i = 0;i <= size - len ;++ i)
35     {
36         if(!a.compare(0,len,b,i,len))
37             return true;
38     }
39 
40     return false;
41 }
42 
43 int main()
44 {
45     int cas;
46     int n;
47     cin >> cas;
48     while(cas --)
49     {
50         cin >> n;
51         string str[150];
52         for(int i = 0;i < n;i ++)
53         {
54             cin >> str[i];
55         }
56 
57         sort(str,str + n,cmp);
58 
59         int len = str[0].size();
60         int maxlen = 0;
61         for(int i = 1;i <= len;++ i)
62         {
63             int flag = 0;
64             for(int j = 0;!flag && j < len - i + 1;++ j)
65             {
66                 string temp = str[0].substr(j,i);
67                 int k = 1;
68                 for(;k < n;++ k)
69                 {
70                     if(!search(temp,str[k],i))
71                     {
72                         break;
73                     }
74                 }
75                 if(k == n)
76                     flag = 1;
77             }
78             if(!flag)
79                 break;
80             else
81             {
82                 maxlen = i;
83             }
84         }
85 
86         cout << maxlen << endl;
87     }
88 
89     return 0;
90 }
原文地址:https://www.cnblogs.com/Shirlies/p/2609661.html