编程之美-3.1-字符串移位包含的问题

1. 简述

    给定两个字符串s1和s2,要求判断s2是否能够被s1做循环移位得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD,s2=ACBD,返回false。

2. 思路

    将问题转化为:判断s1s1中是否包含s2子串。即对于s1=AABCD和s2=CDAA,判断AABCDAABCD中是否存在AA。
    使用KMP匹配就行,对于s1s1也不用特地去开辟空间,假设s1的字符串指针为str,长度为len_str,只需len_str += len_str和str[i%len_str]即可。

3. 参考资料

    编程之美,3.1节,字符串移位包含的问题

posted @ 2011-09-07 16:18  xiaodongrush  阅读(359)  评论(1编辑  收藏  举报