博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CareerCup它1.8 串移包括问题
阅读量:5356 次
发布时间:2019-06-15

本文共 2286 字,大约阅读时间需要 7 分钟。

【称号】

原文:

1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., “waterbottle” is a rotation of “erbottlewat”).

译文:

如果你有一个isSubstring函数,能够检測一个字符串是否是还有一个字符串的子串。 给出字符串s1和s2。仅仅使用一次isSubstring就能推断s2是否是s1的旋转字符串, 请写出代码。旋转字符串:"waterbottle"是"erbottlewat"的旋转字符串。

【分析】

我们也能够对循环移位之后的结果进行分析。
以S1 = ABCD为例,先分析对S1进行循环移位之后的结果,例如以下所看到的:
ABCD--->BCDA---->CDAB---->DABC---->ABCD……
如果我们把前面的移走的数据进行保留。会发现有例如以下的规律:
ABCD--->ABCDA---->ABCDAB---->ABCDABC---->ABCDABCD……
因此,能够看出对S1做循环移位所得到的字符串都将是字符串S1S1的子字符串。

假设S2能够由S1循环移位得到,那么S2一定在S1S1上,这样时间复杂度就减少了。

相同题目:

【代码一】

/**********************************   日期:2014-5-15*   作者:SJF0115*   题号: 字符串移位包括问题*   来源:CareerCup**********************************/#include 
#include
#include
using namespace std;bool isSubstring(char* str1,char* str2){ if(str1 == NULL || str2 == NULL){ return false; } if(strstr(str1,str2) != 0){ return true; } return false;}bool IsRotate(char* str1,char* str2){ int i,j; if(str1 == NULL || str2 == NULL){ return false; } int len1 = strlen(str1); char* str3 = new char(len1*2+1); strcpy(str3,str1); strcat(str3,str1); //str3 = str1+str1 if(isSubstring(str3,str2)){ return true; } return false;}int main(){ char str1[6] = "AABCD"; char str2[5] = "CDAA"; bool result = IsRotate(str1,str2); cout<
<

【代码二】

/**********************************   日期:2014-5-15*   作者:SJF0115*   题号: 字符串移位包括问题*   来源:CareerCup**********************************/#include 
#include
#include
using namespace std;bool isSubstring(string str1,string str2){ if(str1.find(str2) != string::npos) { return true; } return false;}bool IsRotate(string str1,string str2){ string str3 = str1+str1; if(isSubstring(str3,str2)){ return true; } return false;}int main(){ string str1 = "apple"; string str2 = "pleap"; bool result = IsRotate(str1,str2); cout<
<

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/yxwkf/p/4619548.html

你可能感兴趣的文章
mybatis 执行SQL的过程
查看>>
【数据结构】之二叉树的java实现
查看>>
[iOS] UIImage和CGImageRef
查看>>
用一条sql取得第10到第20条的记录
查看>>
前端流行的技术
查看>>
HDU 1010 Tempter of the Bone
查看>>
HDU 1846 Brave Game
查看>>
BZOJ 1202 [HNOI2005]狡猾的商人(并查集)
查看>>
POJ 2778 DNA Sequence(AC自动机+矩阵)
查看>>
微信开发 access_token 数量限制问题
查看>>
关于ajax提交表单
查看>>
你知道C#中的Lambda表达式的演化过程吗?
查看>>
WCF 无法生成 client
查看>>
Locality Sensitive Hashing
查看>>
Azure cache 的配置与应用
查看>>
无重复字符的最长子串
查看>>
关于sys.dm_exec_requests
查看>>
比较详细的Python正则表达式(转)
查看>>
root用户ssh可以登录,xftp通过sftp不能登录链接CentOS解决办法
查看>>
python简说(六)判断
查看>>