《编程之美》3.1 字符串移位包含的问题
2012-04-28 21:55
337 查看
问题:给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位(rotate)得到的字符串包含。例如,给定s1 = AABCD 和 s2 = CDAA ,返回true;给定s1 = ABCD 和 s2 = ACBD,返回false.
解法一:使用最直接的方法对s1进行循环移位,再进行字符串包含的判断,从而遍历其所有的可能性。
解法二:我们把前面移走的数据进行保留,会发现有如下的规律:对s1做循环移位所得到的字符串都将是字符串s1s1的子字符串。如果s2可以由s1循环移位得到,那么s2一定在s1s1上。
解法一:使用最直接的方法对s1进行循环移位,再进行字符串包含的判断,从而遍历其所有的可能性。
#include<iostream> using namespace std; char src[] = "AABBCD"; char des[] = "CDAA"; bool main() { int len = strlen(src); for(int i = 0;i< len;i++) { char tempchar = src[0]; for(int j = 0;j < len - 1;j++) src[j] = src[j+1]; src[len - 1] = tempchar; if(strstr(src,des) == 0) { cout << "des include in src" << endl; return true; } } cout << "des not include in src" << endl; return false; }
解法二:我们把前面移走的数据进行保留,会发现有如下的规律:对s1做循环移位所得到的字符串都将是字符串s1s1的子字符串。如果s2可以由s1循环移位得到,那么s2一定在s1s1上。
相关文章推荐
- 3.1 字符串移位包含的问题——编程之美
- 编程之美3.1 字符串移位包含问题
- [编程之美3.1]字符串移位包含的问题
- 编程之美:3.1 字符串移位包含的问题
- 编程之美3.1——字符串移位包含的问题(KMP算法)
- 编程之美——3.1 字符串移位包含的问题
- 《编程之美》 - 3.1 字符串移位包含的问题( 不用strstr()的解法 )
- 编程之美-3.1字符串移位包含问题
- 字符串移位包含问题(编程之美3.1)
- 编程之美:第三章 结构之法 3.1字符串移位包含的问题
- 编程之美3.1 字符串移位包含问题
- 编程之美——3.1字符串移位包含问题
- 《编程之美》——3.1字符串移位包含的问题
- 编程之美——3.1字符串移位包含问题
- 编程之美3.1字符串移位包含问题
- 编程之美3.1—字符串移位包含问题
- 《编程之美》- 3.1 - 字符串移位包含的问题
- 编程之美3.1 字符串移位包含问题
- 《编程之美3.1:字符串移位包含问题》
- 编程之美3.1 字符串移位包含的问题