[Python]LeetCode 796. 旋转字符串

452 阅读1分钟
给定两个字符串, 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。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
  • 思路
1. 判断2个字符串是否一样,一样就返回True
2. 判断排序后是否一样,一样就可以继续,否则就肯定不是符合条件的(因为每个字符出现的次数应该要一致)
3. 如果满足条件
    3.1 取第一个数放到最后面,比较跟B是否一致
    3.2 然后取第二个,依次类推
4. 结束(最终效率应该还是低了)
  • 示例代码
class Solution:
    def rotateString(self, A: str, B: str) -> bool:
        if A==B:return True
        elif sorted(A)==sorted(B):
            for i in range(len(A)):
                if (A[i:]+A[:i])==B:
                    return True
            else:
                return False
        else:
            return False
  • 执行效果:比较差,待优化。