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

โปรแกรมหาคำนำหน้าที่ยาวที่สุดที่พบร่วมกันจากรายการสตริงใน Python

สมมติว่ามีรายการสตริงตัวพิมพ์เล็ก เราต้องหาคำนำหน้าที่ยาวที่สุดที่พบร่วมกัน

เช่น ถ้าอินพุตคือ ["antivirus", "anticlockwise", "antigravity"] ผลลัพธ์จะเป็น "anti"

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

  • เรียงรายการ words ตามตัวอักษร
  • prefix := รายการใหม่, flag := 0
  • for i ในช่วง 0 ถึง len(words[0])
    • prefix.append(words[0][i])
    • for j ใน words ถ้า j[i] != prefix[-1] prefix.pop(), flag := 1, break
    • ถ้า flag == 1 break
  • คืนค่าสตริงจากการต่อสมาชิกใน prefix

ตัวอย่างโค้ด

class Solution:
    def solve(self, words):
        words.sort()
        prefix = []
        flag = 0
        for i in range(len(words[0])):
            prefix.append(words[0][i])
            for j in words:
                if j[i] != prefix[-1]:
                    prefix.pop()
                    flag = 1
                    break
            if flag == 1:
                break
        return ''.join(prefix)

ob = Solution()
words = ["antivirus", "anticlockwise", "antigravity"]
print(ob.solve(words))

อินพุต

["antivirus", "anticlockwise", "antigravity"]

เอาต์พุต

anti