Giả sử chúng ta có một chuỗi s, chúng ta phải tìm số chuỗi con palindromic trong s.
Vì vậy, nếu đầu vào là s ="level", thì đầu ra sẽ là 7, vì các chuỗi con palindromic là:["l", "e", "v", "e", "l", "eve" , "cấp độ"]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Xác định một hàm check_palindrome (). Thao tác này sẽ lấy chuỗi, trái, phải
- ans:=0
- khi left> =0 và right
- nếu s [left] giống s [right] thì
- ans:=ans + 1
- left:=left - 1
- right:=right + 1
- nếu không,
- trả lại ans
- nếu s [left] giống s [right] thì
- ans:=ans + check_palindrome (s, char_index - 1, char_index + 1)
- ans:=ans + check_palindrome (s, char_index, char_index + 1)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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")) Đầu vào
"level"
Đầu ra
7