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: true Example 2:
Input: A = 'abcde', B = 'abced'
Output: false

Note:

  • A and B will have length at most 100.

这道题给了我们两个字符串A和B,定义了一种偏移操作,以某一个位置将字符串A分为两截,并将两段调换位置,如果此时跟字符串B相等了,就说明字符串A可以通过偏移得到B。现在就是让我们判断是否存在这种偏移,那么最简单最暴力的方法就是遍历所有能将A分为两截的位置,然后用取子串的方法将A断开,交换顺序,再去跟B比较,如果相等,返回true即可,遍历结束后,返回false,参见代码如下:

解法一:

class Solution {
public:
bool rotateString(string A, string B) {
if (A.size() != B.size()) return false;
for (int i = ; i < A.size(); ++i) {
if (A.substr(i, A.size() - i) + A.substr(, i) == B) return true;
}
return false;
}
};

还有一种一行完成碉堡了的方法,就是我们其实可以在A之后再加上一个A,这样如果新的字符串(A+A)中包含B的话,说明A一定能通过偏移得到B。就比如题目中的例子,A="abcde", B="bcdea",那么A+A="abcdeabcde",里面是包括B的,所以返回true即可,参见代码如下:

解法二:

class Solution {
public:
bool rotateString(string A, string B) {
return A.size() == B.size() && (A + A).find(B) != string::npos;
}
};

参考资料:

https://leetcode.com/problems/rotate-string/solution/

https://leetcode.com/problems/rotate-string/discuss/118696/C++-Java-Python-1-Line-Solution

LeetCode All in One 题目讲解汇总(持续更新中...)

最新文章

  1. php中计算二维数组中某一元素之和
  2. 【HTML5】audio音频
  3. Operator overloading
  4. 设置field的背景颜色以及对stylesheet的理解
  5. (转)RabbitMQ消息队列(三):任务分发机制
  6. 《Linux内核分析》 week4作业-使用嵌入式汇编调用一个系统调用
  7. TCP连接探测中的Keepalive和心跳包. 关键字: tcp keepalive, 心跳, 保活
  8. SQL中distinct的用法(转)
  9. 判断一个数是否为2的n次幂
  10. Python装饰器小代码
  11. python/基础输出输入用法
  12. bzoj 2229: [Zjoi2011]最小割
  13. mysql的sql_mode设置
  14. php,js 对字符串按位异或运算加密解密
  15. 《Unity3D 实战核心技术详解》书中关于矩阵的错误
  16. MySQL使用AUTO_INCREMENT列的表注意事项之update自增列篇
  17. bzoj3545 Peaks
  18. sga 操作命令
  19. 静态代码检查findbugs/阿里巴巴开发规范
  20. 基于xtrabackup GDIT方式不锁库作主从同步(主主同步同理,反向及可)

热门文章

  1. VSCode CSS自动补充前缀
  2. [物理学与PDEs]第1章习题6 无限长载流直线的磁场
  3. sqlmap基础入门超详细教程
  4. MySQL学习3 - 数据表的操作
  5. js高级知识---词法分析和AO 链
  6. Django之分页
  7. Eclipse 搭建 Strust2开发环境
  8. IEnumerable&lt;T&gt;和IQueryable&lt;T&gt;区别
  9. 小程序获取formid配置模板消息
  10. mysql拼接字符串