3.1 字符串移位包含问题
2013-08-31 21:32
190 查看
问题:
给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。
解法1:
最直接的方法对s1进行循环移位,再进行字符串包含判断,遍历所有可能性。
代码如下:
解法2:
如果s2可以由s1循环移位得到,那么s2一定在s1s1上。
给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。
解法1:
最直接的方法对s1进行循环移位,再进行字符串包含判断,遍历所有可能性。
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> int isSubString() { char src[] = "AABBCD"; char des[] = "CDAA"; int i = 0, j = 0; char temp = src[0]; int len = strlen(src); for(i = 0; i < len; i++) { temp = src[0]; for(j = 0; j < len - 1; j++) src[j] = src[j + 1]; src[len - 1] = temp; if (strstr(src, des) == 0) return 1; } return 0; } int main() { if(isSubString()) printf("YES!\n"); else printf("NO!\n"); return 0; }
解法2:
如果s2可以由s1循环移位得到,那么s2一定在s1s1上。
#include <stdio.h> #include <stdlib.h> #include <string.h> int isSubString() { char src[] = "AABBCD"; char des[] = "CDAA"; char result[20] = ""; strcpy(result, src); strcat(result, src); printf("%s\n",result); if (strstr(result, des) == 0) return 1; else return 0; } int main() { if(isSubString()) printf("YES!\n"); else printf("NO!\n"); return 0; }
相关文章推荐
- 编程之美3.1字符串移位包含的问题的扩展问题
- 编程之美3.1—字符串移位包含问题
- 编程之美3.1 字符串移位包含问题
- 编程之美3.1 字符串移位包含问题
- 编程之美3.1——字符串移位包含的问题(KMP算法)
- 编程之美3.1 字符串移位包含问题
- 3.1_计算字符串移位包含问题
- 编程之美——3.1字符串移位包含问题
- 编程之美------3.1 字符串移位包含的问题
- 3.1 字符串移位包含的问题——编程之美
- 编程之美读书笔记3.1—字符串移位包含的问题
- 3.1——字符串移位包含问题
- 编程之美3.1 字符串移位包含的问题
- 《编程之美》 - 3.1 字符串移位包含的问题( 不用strstr()的解法 )
- 3.1字符串移位包含问题
- 编程之美-3.1字符串移位包含问题
- [编程之美3.1]字符串移位包含的问题
- 字符串移位包含问题(编程之美_3.1)
- 编程之美--3.1字符串移位包含问题
- 编程之美 3.1字符串移位包含的问题