假设我们有一个字符串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