Cho chuỗi S, tìm dãy con đối xứng (palindromic subsequence) lớn nhất theo thứ tự từ điển.
Ví dụ: "tutorialspointtutorial" → "uu" (ký tự 'u' lớn nhất, xuất hiện 2 lần).
Giải thuật
Dãy con đối xứng lớn nhất theo thứ tự từ điển chính là chuỗi gồm tất cả các lần xuất hiện của ký tự lớn nhất trong chuỗi.
- Tìm ký tự lớn nhất max_val trong chuỗi.
- Thu thập tất cả các vị trí có ký tự max_val.
- Kết quả là chuỗi lặp max_val số lần xuất hiện.
Ví dụ
def largest_palindromic_substr(s):
ans = ""
max_val = s[0]
for i in range(1, len(s)):
max_val = max(max_val, s[i])
for i in range(len(s)):
if s[i] == max_val:
ans += s[i]
return ans
s = "tutorialspointtutorial"
print(largest_palindromic_substr(s))Đầu vào
"tutorialspointtutorial"
Đầu ra
uu