力扣(LeetCode)796

Linus脫襪子發表於2019-01-19

題目地址:
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;
    }
}

相關文章