Cho chuỗi s, đếm số lượng xâu con palindrome trong s.
Ví dụ: s = "level" → 7 (["l","e","v","e","l","eve","level"]).
Quy trình giải quyết (Mở rộng từ trung tâm)
- Định nghĩa hàm
check_palindrome(s, left, right)mở rộng từ trung tâm. - Với mỗi chỉ số
char_index:- Gọi cho palindrome độ dài lẻ:
check_palindrome(s, char_index-1, char_index+1). - Gọi cho palindrome độ dài chẵn:
check_palindrome(s, char_index, char_index+1).
- Gọi cho palindrome độ dài lẻ:
- Tổng cộng thêm
len(s)(các ký tự đơn lẻ).
Ví dụ mã nguồn
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")) # Output: 7
Đầu vào
"level"
Đầu ra
7