在 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
    • 返回 False

让我们看看以下实现以获得更好的理解 -

示例代码

在线演示

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

更新于: 2021年1月15日

280 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告