首页 > 其他 > 详细

字符串移位包含的问题

时间:2015-04-28 09:52:19      阅读:267      评论:0      收藏:0      [点我收藏+]

技术分享题目描述:

    给定两个字符串s1和s2,要求上是否能够通过s1作循环移位(rotate)得到的字符串包含。例如s1=AABCD和s2=CDAA,返回true,给定s1=ABCD和s2=ACBD,返回false.


技术分享解法一:

   可以使用最直接的方法对s1进行循环移位,再进行字符串包含的判断,从而遍历其所有的可能性。

代码如下:

char src[5] = "AABCD";
char des[5] = "CDAA";
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)
return (true);
}
return false;

穷举做循环移位,当字符串长度N较大时,显然效率很低。


技术分享解法二:

技术分享技术分享

总结:

    第二种方法利用了“提高空间复杂度换取时间复杂度的降低”的思路,适用于对时间复杂度要求高的场合。



字符串移位包含的问题

原文:http://blog.csdn.net/wangfengfan1/article/details/45316915

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!