该程序查找通过修剪Python中的字符串可以产生的回文数

假设我们有一个字符串s,我们必须找到通过修剪s的左右两侧来获得回文的方法。

因此,如果输入类似于s =“ momo”,则输出将为6,因为您可以获得[“ mom”,“ omo”,“ o”,“ o”,“ m”,“ m”,“ o“)

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数expand()。这需要i,j,s

  • c:= 0

  • 当i> = 0且j <s和s [i]的大小与s [j]相同时,

    • i:= i − 1,j:= j + 1

    • c:= c + 1

  • 返回c

  • 在主要方法中,执行以下操作

  • c:= 0

  • 对于0到s大小的范围内的i,执行

    • c:= c + expand(i,i,s)

    • c:= c + expand(i,i + 1,s)

  • 返回c

让我们看下面的实现以更好地理解-

示例

def expand(i, j, s):
   c = 0
   while i >= 0 and j < len(s) and s[i] == s[j]:
      i −= 1
      j += 1
      c += 1
   return c
class Solution:
   def solve(self, s):
      c = 0
      for i in range(len(s)):
         c += expand(i, i, s)
         c += expand(i, i + 1, s)
      return c
ob = Solution()
s = "momo"
print(ob.solve(s))

输入项

"momo"

输出结果

6