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

来源:互联网 发布:安卓看电影软件 编辑:程序博客网 时间:2024/06/05 02:58

题目:

给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。


解法一:O(N^2)

对s1进行循环移位,在进行字符串包含的判断。

//s1,s2int len = strlen(s1);for(i:len){      char t=s1[0];    for(j:len-1)         s1[j]=s[j+1];    s1[len-1]=t;    if(strstr(s1,s2)==0)       return true;}return false;

解法二:O(1)

如果s2可以由s1循环位移得到,那么s2一定在s1s1上。

转换成查找s2是否在s1s1上,可通过调用一次strstr函数得到结果。


典型的牺牲空间换取时间的思路。适合于对时间复杂度要求高的场合。

0 0
原创粉丝点击