Python 字符串旋转判断:高效算法实现

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

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

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

示例 1:

输入: s = 'abcde', goal = 'cdeab' 输出: True

示例 2:

输入: s = 'abcde', goal = 'abced' 输出: False

提示:

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

算法思路:

可以将字符串 s 翻转两次,得到 s_s,然后判断 s_s 是否包含 goal 字符串,如果包含则返回 True,否则返回 False

代码实现:

def rotateString(s: str, goal: str) -> bool:
    if len(s) != len(goal):
        return False
    s_s = s + s
    if goal in s_s:
        return True
    return False

测试样例:

s = 'abcde'
goal = 'cdeab'
print(rotateString(s, goal))  # 输出 True

s = 'abcde'
goal = 'abced'
print(rotateString(s, goal))  # 输出 False

解释:

该算法首先判断两个字符串的长度是否相等,如果不相等则直接返回 False

然后将 s 重复连接一次,得到 s_s。如果 goals_s 中,则说明 s 可以通过旋转操作变成 goal,返回 True,否则返回 False

总结:

本算法通过字符串拼接和包含判断,实现了高效的字符串旋转判断功能。代码简洁易懂,易于理解和使用。


原文地址: https://www.cveoy.top/t/topic/pkNN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录