题目地址:https://leetcode-cn.com/probl… 题目描述:给定两个字符串, A 和 B。
A 的旋转操作就是将 A 最左边的字符移动到最右边。例如, 若 A = ‘abcde’,在移动一次之后结果就是 ’bcdea’。如果在若干次旋转操作之后,A 能变成 B,那么返回 True。
示例 1: 输入: A = ‘abcde’, B = ‘cdeab’ 输出: true
示例 2: 输入: A = ‘abcde’, B = ‘abced’ 输出: false 注意:
A 和 B 长度不超过 100。
解答:方法一:可以把字符串 A 左移 A.length()- 1 次,如果有一次移动完和 B 相同,那么就返回 true,否则返回 false,但是这样的较慢,因为左移本身就是一个耗时操作。方法二:因为如果 B 是 A 左移后变成的字符串,那么 B 必然在 A + A 这个字符串中出现,那么我们只需要判断 B 是否出现在 A + A 这个字符串中即可。我使用方法二来解这个题。java ac 代码:
class Solution {
public boolean rotateString(String A, String B) {
if(A.length() != B.length())return false;
return (A+A).indexOf(B) != -1;
}
}