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

คำที่ยาวที่สุดในพจนานุกรมใน Python


สมมติว่าเรามีรายการคำที่เป็นตัวแทนของพจนานุกรมภาษาอังกฤษ เราต้องหาคำที่ยาวที่สุดในรายการคำที่กำหนด ซึ่งสามารถสร้างอักขระได้ทีละตัวโดยใช้คำอื่นๆ ในคำ หากมีคำตอบที่เป็นไปได้มากกว่าหนึ่งคำตอบ ให้ส่งคืนคำที่ยาวที่สุดด้วยลำดับที่เล็กที่สุด หากไม่มีคำตอบ ให้คืนค่าสตริงว่าง

ดังนั้น หากอินพุตเป็น ["h","he","hel","hell", "hello"] เอาต์พุตจะเป็น "hello"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ลอง :=แผนที่ใหม่
  • กำหนดฟังก์ชัน insert() นี้จะใช้เวลาคำพูด
  • ตอนนี้ :=พยายาม
  • สำหรับแต่ละ c ใน word ทำ
    • ถ้าไม่ได้อยู่ในตอนนี้ −
      • ตอนนี้[c] ={'#', False} จากนั้น
    • ตอนนี้ :=ตอนนี้[c]
    • ตอนนี้['#'] :=จริง
  • กำหนดฟังก์ชัน search() นี้จะใช้เวลาคำพูด
  • ตอนนี้ :=พยายาม
  • สำหรับแต่ละ c ใน word ทำ
    • ถ้า '#' ในตอนนี้และไม่ใช่ตอนนี้['#'] เป็น True แล้ว
      • คืนค่าเท็จ
    • ตอนนี้ :=ตอนนี้[c]
    • กลับมาเดี๋ยวนี้['#']
  • สำหรับแต่ละคำในคำ ทำ
    • เรียกแทรก(คำ)
  • ตอบ :=สตริงว่าง
  • สำหรับแต่ละคำในคำ ทำ
    • หากค้นหา (คำ) และ (ขนาดของคำ> ขนาดของ ans หรือ (ขนาดของคำเท่ากับขนาดของ ans และ word
    • ตอบ :=คำ
  • คืนสินค้า
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    class Solution:
       def longestWord(self, words):
          self.trie = {}
       def insert(word):
          now = self.trie
          for c in word:
             if c not in now: now[c] = {'#': False}
                now = now[c]
             now['#'] = True
       def search(word):
          now = self.trie
          for c in word:
             if '#' in now and not now['#']: return False
                now = now[c]
             return now['#']
             for word in words:
                insert(word)
             ans = ""
             for word in words:
                if (search(word) and (len(word) > len(ans) or (len(word) == len(ans) and word    < ans))):
             ans = word
          return ans
    ob = Solution()
    print(ob.longestWord(["h","he","hel","hell", "hello"]))

    อินพุต

    ["h","he","hel","hell", "hello"]

    ผลลัพธ์

    hello