สมมติว่าเรามีรายการคำที่ถูกต้อง และมีสตริง s ด้วย เราต้องหาความยาวของคำที่ลดจำนวนลงที่ยาวที่สุด ซึ่งสร้างขึ้นได้โดยการเริ่มที่ s และนำอักษรเดี่ยวออก และยังคงสร้างคำที่ถูกต้อง
ดังนั้น หากการป้อนเป็นเหมือนคำ =["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"] s ="limit" แล้ว เอาต์พุตจะเป็น 4 ดังที่เราสามารถสร้าง chain ได้ โดยเริ่มจากคำว่า "limit", "limit" ->"limi" -> "lii" -> "li"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้
-
กำหนดฟังก์ชัน Solve() นี่ต้องใช้คำพูดนะ s
-
max_num :=0
-
สำหรับแต่ละฉันในคำพูดทำ
-
ถ้าฉันเหมือนกับ s แล้ว
-
สำหรับ j ในช่วง 0 ถึงขนาดของ s ทำ
-
max_num :=สูงสุด 1 + แก้ (คำ s[จากดัชนี 0 ถึง j-1]ต่อกัน s[จากดัชนี j + 1 ถึงปลาย]) และ max_num
-
-
-
-
คืนค่า max_num
ตัวอย่าง
class Solution: def solve(self, words, s): max_num = 0 for i in words: if i == s: for j in range(len(s)): max_num = max(1 + self.solve(words, s[:j] + s[j + 1 :]), max_num) return max_num ob = Solution() words = ["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"] s = "limit" print(ob.solve(words, s))
อินพุต
["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"],"limit"
ผลลัพธ์
4