力扣(LeetCode)796

题目地址:
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;
    }
}
    原文作者:Linus脱袜子
    原文地址: https://segmentfault.com/a/1190000017919263
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞