给出电话号码,判断短的号码是不是长的号码的前缀。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
char s[11];
} p[10001];
int m;
bool cmp(node a,node b)
{
if(strcmp(a.s,b.s)<=0)
return true;
return false;
}
bool a()
{
int l1,l2,i,j;
int sum=0;
for(i=0;i<m-1;i++)
{
j=i+1;
if(p[i].s[0]==p[j].s[0])
{
l1=strlen(p[i].s);
int start=1,end=l1-1;
while(start<=end)
{
if((p[i].s[start]==p[j].s[start])&&(p[i].s[end]==p[j].s[end]))
{
start++;
end--;
}
else
{
sum=1;
break;
}
}
if(sum==0)
return true;
sum=0;
}
}
return false;
}
int main()
{
int n,i;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
for(i=0; i<m; i++)
{
scanf("%s",p[i].s);
}
sort(p,p+m,cmp);
if(a())
printf("NO\n");
else
printf("YES\n");
}
return 0;
}