本文共 1162 字,大约阅读时间需要 3 分钟。
t2712:字符串移位包含问题
总时间限制:1000ms 内存限制:65536kB描述 给定两个字符串s1和s2,要求判定其中一个字符串 是否是另一字符串通过循环移位后的子字符串。例如 CDAA是由AABCD两次移位后BCDAA的子串,而ABCD 与ACBD不能通过移位来得到其中一个字符串是另一个字 符串循环移位的子串。输入 第一行有一个整数n,表示这组测试数据共有n行。 其后n行,每行由两个字符串组成。输出 如果一个字符串是另一字符串通过循环移位的子串, 则返回true,否则返回false。样例输入 2 AABCD CDAA ABCD ACBD样例输出 true false分析:据网上流传资料,假如两个串a和b满足:b是a循环移位后的一个子串,则b是串a&a的子串。当然,在这之前要满足LenA>=LenB,否则不科学不合理。
1 #include2 #include 3 int main(int argc, char *argv[]) { 4 int n,i; 5 char a[10000],b[10000],t[20000]; 6 char *p; 7 8 scanf("%d",&n); 9 //printf("%d\n",n);10 getchar();11 for(i=0;i =strlen(b))17 {18 t[0]='\0';19 strcpy(t,a);20 strcat(t,a);21 p=NULL;22 p=strstr(t,b);23 if(p!=NULL) printf("true\n");24 else printf("false\n");25 }26 else27 {28 t[0]='\0';29 strcpy(t,b);30 strcat(t,b);31 p=NULL;32 p=strstr(t,a);33 if(p!=NULL) printf("true\n");34 else printf("false\n");35 }/**/36 }37 return 0;38 }
转载地址:http://ctsnl.baihongyu.com/