สมมติว่าเรามีสตริง S ต้องการหาลำดับย่อยพาลินโดรมที่ใหญ่ที่สุดตามลำดับเล็กซิโคกราฟิก
เช่น "tutorialspointtutorial" ผลลัพธ์คือ "uu"
ขั้นตอนการแก้ปัญหา
- หาตัวอักษรที่มากที่สุดตามลำดับเล็กซิโคกราฟิกในสตริง (max_val)
- รวบรวมตัวอักษร max_val ทั้งหมดในสตริง ต่อกัน → ได้ลำดับย่อยพาลินโดรมที่ใหญ่ที่สุด
เหตุผล: ลำดับย่อยพาลินโดรมที่ใหญ่ที่สุดจะต้องประกอบด้วยตัวอักษรที่ใหญ่ที่สุดซ้ำกัน
ตัวอย่างโค้ด Python
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))
อินพุต
"tutorialspointtutorial"
เอาต์พุต
uu