旋转字符串

旋转字符串

CategoryDifficultyLikesDislikes
algorithmsEasy (63.30%)282-

Tags

math

Companies

Unknown

给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。

s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 

  • 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。

示例 1:

1
2
输入: s = "abcde", goal = "cdeab"
输出: true

示例 2:

1
2
输入: s = "abcde", goal = "abced"
输出: false

提示:

  • 1 <= s.length, goal.length <= 100
  • s 和 goal 由小写英文字母组成

Discussion | Solution

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// @lc code=start
impl Solution {
    /// ## 解题思路
    /// - 将a复制一倍为aa;
    /// - 如果aa包含b,则b必定为a的旋转字符串;
    pub fn rotate_string(a: String, b: String) -> bool {
        a.len() == b.len() && a.repeat(2).contains(b.as_str())
    }
}
// @lc code=end

use super::*;
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test() {
        assert_eq!(
            Solution::rotate_string("abcde".into(), "cdeab".into()),
            true
        );
        assert_eq!(
            Solution::rotate_string("abcde".into(), "abced".into()),
            false
        );
    }
}

updatedupdated2024-08-252024-08-25