Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาลำดับย่อยพาลินโดรมที่ใหญ่ที่สุดตามลำดับเล็กซิโคกราฟิกใน Python

สมมติว่าเรามีสตริง S ต้องการหาลำดับย่อยพาลินโดรมที่ใหญ่ที่สุดตามลำดับเล็กซิโคกราฟิก

เช่น "tutorialspointtutorial" ผลลัพธ์คือ "uu"

ขั้นตอนการแก้ปัญหา

  1. หาตัวอักษรที่มากที่สุดตามลำดับเล็กซิโคกราฟิกในสตริง (max_val)
  2. รวบรวมตัวอักษร 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