#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char str[15][80];
int n, m;
int main()
{
scanf("%d", &n);
while(n--) {
scanf("%d", &m);
getchar();
for(int i = 0; i < m; i++) {
scanf("%s", str[i]);
}
char s1[70];
char ans[70];
int t = 0;
int len = strlen(str[0]);
for(int i = 0; i < len; i++) { //枚举第一串长度大于3的字串。
for(int j = i + 2; j < len; j++) {
strncpy(s1, str[0]+i, j - i + 1); //截取str[0]中i 到j-i + 1 这一段的字符;
s1[j-i + 1] = '\0'; //需要手动加上'\0'结束符。
// printf("%s\n", s1);
int flag = 1;
for(int k = 1; k < m&&flag; k++) {
if(strstr(str[k], s1) == NULL) { //用该字串和其它串进行匹配。
flag = 0;
}
}
// printf("%d\n", flag);
if(flag) {
if(t == 0) {
strcpy(ans, s1);
t++;
}else {
int ans1 = strlen(ans);
int slen = strlen(s1);
if(ans1 < slen) {
strcpy(ans, s1);
}else if(ans1 == slen && strcmp(ans, s1) > 0) {
strcpy(ans, s1);
}
}
}
}
}
if(t != 0) {
printf("%s\n", ans);
}else {
printf("no significant commonalities\n");
}
}
return 0;
}
poj3080 很好的字符串模拟题
最新推荐文章于 2017-06-26 13:09:15 发布