📌  相关文章
📜  检查是否将任何字符串左右移动到给定的字符串(1)

📅  最后修改于: 2023-12-03 15:10:54.780000             🧑  作者: Mango

检查是否将任何字符串左右移动到给定的字符串

在字符串处理中,有时候需要将某个字符串向左或向右移动若干位,例如:

"abcdefg" 向左移动 2 位变成 "cdefgab"
"abcdefg" 向右移动 3 位变成 "efgabcd"

现在,假设有一个字符串 s 和一个目标字符串 target,需要检查是否可以通过将 s 中的一部分向左或向右移动若干位来得到 target。如果可以,返回 True,否则返回 False。

以下是一个示例函数的代码实现:

def can_rotate_to_target(s: str, target: str) -> bool:
    if len(s) != len(target):
        return False
    for i in range(len(s)):
        if s[i:] + s[:i] == target:
            return True
    return False

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

然后,我们逐一将 s 中的字符向左移动若干位,检查每一次移动后的字符串是否与 target 相等。如果相等,说明 s 可以通过向左移动若干位得到 target,返回 True。

如果所有的移动操作后都没有得到 target,说明 s 不能通过移动得到 target,返回 False。

以下是该函数的测试代码:

assert can_rotate_to_target("abcdefg", "cdefgab") == True
assert can_rotate_to_target("abcdefg", "efgabcd") == True
assert can_rotate_to_target("abcdefg", "gabcdef") == True
assert can_rotate_to_target("abcdefg", "gabcdefg") == False
assert can_rotate_to_target("abcdefg", "abcde") == False

以上就是本文介绍的内容。如果有任何问题或建议,欢迎在评论区留言。