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

Rust Solution

struct Solution;

impl Solution {
    fn rotate_string(a: String, b: String) -> bool {
        if a.len() != b.len() {
            return false;
        }
        let mut c = "".to_string();
        c += &a;
        c += &a;
        c.contains(&b)
    }
}

#[test]
fn test() {
    let a = "abcde".to_string();
    let b = "cdeab".to_string();
    assert_eq!(Solution::rotate_string(a, b), true);
    let a = "abcde".to_string();
    let b = "abced".to_string();
    assert_eq!(Solution::rotate_string(a, b), false);
}

Having problems with this solution? Click here to submit an issue on github.