博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-796-Rotate String
阅读量:6480 次
发布时间:2019-06-23

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

题目描述:

We are given two strings, A and B.

shift on A consists of taking string A and moving the leftmost character to the rightmost position. For example, if A = 'abcde', then it will be 'bcdea' after one shift on A. Return True if and only if A can become B after some number of shifts on A.

Example 1:Input: A = 'abcde', B = 'cdeab'Output: trueExample 2:Input: A = 'abcde', B = 'abced'Output: false

Note:

  • A and B will have length at most 100.

 

要完成的函数:

bool rotateString(string A, string B) 

 

说明:

1、给定两个字符串A和B,要求判断这两个字符串,可不可以通过不断地把A中的首字母搬到末尾去,最终把A变成B。比如A为abcde,B为cdeab,就是可以通过前述操作把A变成B的。

2、明白题意,笔者最开始觉得这种结构很熟悉,应该是队列的操作,可以定义一个队列,把A中的字母塞到队列中去,然后不断地取出首位,插入到末位,判断是不是能形成B字符串。

不过这样子还要定义一个队列,操作略显麻烦,直觉这样做并不是最简便的方法。

 

之后想到其实找到B首字母,比如上面给的例子,A是abcde,B是cdeab,B中首字母是c,那么找到c在A中的位置j,然后逐位比较A[j]和B[i](i从0开始)是否相等,这是A中后半部分的比较。

然后再比较A中前半部分是否与B中剩余部分相等。我们已知了j的位置,这些操作都是非常容易的。

这道题就可以做出来了。

 

不过,当碰到B中首字母在A中多次出现,而且首次出现还匹配不上,得第二次才匹配上的情况,比如A是abcdecdf,B是cdfabcde。

如果只是一次搜索,c在A中位置是第三位,这时匹配不成功。

但如果c在A中位置是倒数第三位那里,这时候的匹配就是成功的。

所以之前的做法就得在外面再加多个循环,一直迭代,直到搜索到能匹配的位置。

 

代码如下:(附详解)

bool rotateString(string A, string B)     {        int i=0,j=0,s1=A.size(),s2=B.size();        if(s1!=s2)//边界条件            return false;        if(s1==0)//边界条件,比如A和B都是空字符串            return true;        bool flag;        while(j

上述代码实测3ms,beats 97.87% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/9048971.html

你可能感兴趣的文章
美国将试点利用通信技术改善交通状况
查看>>
iPhone7前景未知,Intel已赚走苹果100亿
查看>>
中国电信启动2016年PON设备集采:10G EPON端口小幅增长
查看>>
深入并行:从并行加载到12c Adaptive特性深度理解Oracle并行
查看>>
maven本地仓库与远程仓库
查看>>
SilkTest入门快打2-编写脚本测试
查看>>
安防行业是AI应用最具空间的机会
查看>>
光存储应对冷数据存储挑战
查看>>
安防行业该如何面对物联网大潮?
查看>>
应急响应工作苦干不如巧干 警报驱动的安全运营该淘汰了
查看>>
苹果为什么坚持不解锁 iPhone ?
查看>>
做自动化测试要考虑的问题
查看>>
Qt之图形(组合)
查看>>
《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一2.4 部署应用
查看>>
《Adobe Premiere Pro CC完全剖析》——工作流程概述
查看>>
4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)...
查看>>
《实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)》一1.6 习题
查看>>
《人工智能:计算Agent基础》——1.9 参考文献及进一步阅读
查看>>
《Python爬虫开发与项目实战》——1.2 搭建开发环境
查看>>
《Unity开发实战》——3.4节创建高光纹理贴图
查看>>