LeetCode 796. 旋转字符串

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rotate-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

LeetCode 796. 旋转字符串插图
OpenCV步步精深-可心科创工作室

思路:直接找到goal中第一个数字在s中的索引(索引有可能会是多个要注意),然后截断s拼接,能拼成就True,否则False。

python3实现:

class Solution:
    def rotateString(self, s: str, goal: str) -> bool:
        # 直接找到goal开头的字母在s中的位置,然后截断s,重新拼接看看能不能成为goal,能就true,不能就false
        goal_start = goal[0]
        if goal_start in s:
            # 这里注意有可能出现很多一样的goal_start,要分别做判断
            goal_start_idx = []
            for elem_idx in range(len(s)):
                goal_start_idx.append(elem_idx)

            for each in goal_start_idx:
                part1 = s[each:]
                part2 = s[:each]

                combine = part1 + part2
                if combine == goal:
                    return True
            
            return False

        else:
            return False
LeetCode 796. 旋转字符串插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深