跳转至

796.Rotate String

Tags: String Easy

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


We are given two strings, A and B.

A 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.

Answer:

class Solution {
public:
    string shift(string & str){
        if (str.size() <= 1) return str;

        string tmp; 
        for (int i = 1; i < str.size(); ++i){
            tmp += str[i];
        }
        tmp += str[0];

        return tmp;
    }

    bool rotateString(string A, string B) {
        if (A.size() != B.size()) return false;
        int n = A.size();

        if (n == 0){
            return true;
        }
        else{
           for (int i = 1; i <= n; ++i){
                if (A == B)
                    return true;
                else{
                    A = shift(A);
                }
            } 
        }

        return false;
    }
};