在 Python 中检查字符串的前缀和后缀是否为回文
假设我们有一个字符串 s,我们需要检查该字符串的前缀和后缀子字符串是否为回文。
因此,如果输入类似于 s = "levelishighforracecar",则输出将为 True,因为存在回文前缀和后缀:分别为 "level" 和 "racecar"。
为了解决这个问题,我们将遵循以下步骤 -
- l := s 的大小
- 对于范围从 2 到 l + 2 的 i,执行
- 如果 s 的索引为 i 之前的子字符串是回文,则
- 退出循环
- 如果 i 等于 (l + 1),则
- 返回 False
- 对于范围从 2 到 l + 2 的 i,执行
- 如果 s 从索引 (l - i) 到 (l - 1) 的子字符串是回文,则
- 返回 True
- 如果 s 从索引 (l - i) 到 (l - 1) 的子字符串是回文,则
- 返回 False
- 如果 s 的索引为 i 之前的子字符串是回文,则
让我们看看以下实现以获得更好的理解 -
示例代码
def is_palindrome(s): return s == s[::-1] def solve(s): l = len(s) for i in range(2, l + 1): if is_palindrome(s[0:i]): break if i == (l + 1): return False for i in range(2, l + 1): if is_palindrome(s[l - i : l]): return True return False s = "levelishighforracecar" print(solve(s))
输入
"levelishighforracecar"
输出
True
广告