📅  最后修改于: 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
以上就是本文介绍的内容。如果有任何问题或建议,欢迎在评论区留言。