程序可以计算Python中回文子字符串的数量

假设我们有一个字符串s,我们必须找到s中回文子字符串的数量。

因此,如果输入类似于s =“ level”,则输出将为7,因为回文子字符串为:[“ l”,“ e”,“ v”,“ e”,“ l”,“ eve” ,“水平”]

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

  • 定义一个函数check_palindrome()。这将需要字符串,左,右

  • 回答:= 0

  • 而当左> = 0且右<s的大小时,执行

    • 返回ans

    • 回答:=回答+1

    • 左:=左-1

    • 右:=右+ 1

    • 如果s [left]与s [right]相同,则

    • 除此以外,

    • 返回ans

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

    • 回答:= 0

    • 对于char_index范围从0到s的大小,执行

      • ans:= ans + check_palindrome(s,char_index-1,char_index + 1)

      • ans:= ans + check_palindrome(s,char_index,char_index + 1)

    • 回报(ans)+ s的大小

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

    示例

    class Solution:
       def solve(self, s):
          def check_palindrome(string, left, right):
             ans = 0
             while left >= 0 and right < len(s):
                if s[left] == s[right]:
                   ans += 1
                   left -= 1
                   right += 1
                else:
                   return ans
             return ans
          ans = 0
          for char_index in range(len(s)):
             ans += check_palindrome(s, char_index - 1, char_index + 1)
             ans += check_palindrome(s, char_index, char_index + 1)
          return (ans) + len(s)
    ob = Solution()print(ob.solve("level"))

    输入值

    "level"

    输出结果

    7
    猜你喜欢