博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Cracking the Coding Interview》——第1章:数组和字符串——题目8
阅读量:5368 次
发布时间:2019-06-15

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

2014-03-18 02:12

题目:判断一个字符串是否由另一个字符串循环移位而成。

解法:首先长度必须相等。然后将第一个串连拼两次,判断第二个串是否在这个连接串中。

代码:

1 // 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”). 2 #include 
3 #include
4 using namespace std; 5 6 class Solution { 7 public: 8 bool isStringRotation(char *s1, char *s2) { 9 if (s1 == nullptr || s2 == nullptr) {10 return false;11 }12 13 int len1, len2;14 15 len1 = strlen(s1);16 len2 = strlen(s2);17 if (len1 != len2) {18 return false;19 }20 21 const int MAXLEN = 1005;22 static char tmp[MAXLEN];23 24 tmp[0] = 0;25 strcat(tmp, s1);26 strcat(tmp, s1);27 return strstr(tmp, s2) != nullptr;28 }29 private:30 bool isSubstring(char *haystack, char *needle) {31 if (haystack == nullptr || needle == nullptr) {32 return false;33 }34 35 return strstr(haystack, needle) != nullptr;36 }37 };38 39 int main()40 {41 char s1[1005];42 char s2[1005];43 Solution sol;44 45 while (scanf("%s%s", s1, s2) == 2) {46 printf("\"%s\" is ", s2);47 if (!sol.isStringRotation(s1, s2)) {48 printf("not ");49 }50 printf("a rotation of \"%s\".\n", s1);51 }52 53 return 0;54 }

 

转载于:https://www.cnblogs.com/zhuli19901106/p/3606685.html

你可能感兴趣的文章
基于位置的本地商铺个性化推荐
查看>>
职场上一个人情商高的十种表现
查看>>
【底层原理】深入理解Cache (下)
查看>>
Elasticsearch安装中文分词插件IK
查看>>
进阶4:常见函数-单行函数
查看>>
简述企业信息化与企业架构关系
查看>>
npoi List 泛型导出
查看>>
流程图怎么画?分享绘制流程图简单方法
查看>>
squid的处理request和reply的流程
查看>>
硬件_陀螺仪
查看>>
三、winForm-DataGridView操作——DataGridView 操作复选框checkbox
查看>>
SSIS的部署和配置
查看>>
计算机内存管理介绍
查看>>
POJ 2761 Feed the dogs 求区间第k大 划分树
查看>>
mysql中间件研究(Atlas,cobar,TDDL)[转载]
查看>>
ASP.NET应用程序与页面生命周期
查看>>
Linux--多网卡的7种Bond模式
查看>>
Oracle命令(一):Oracle登录命令
查看>>
业务建模 之 业务用例图
查看>>
EasyUI基础入门之Pagination(分页)
查看>>