สมมติว่าเรามีรายการสตริงตัวพิมพ์เล็ก เราต้องหาคำนำหน้าร่วมที่ยาวที่สุด
ดังนั้น หากอินพุตเป็นเหมือน ["antivirus", "anticlockwise", "antigravity"] ผลลัพธ์จะเป็น "anti"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
จัดเรียงคำในรายการตามลำดับตัวอักษร
- คำนำหน้า :=รายการใหม่
- ธง :=0
- สำหรับฉันในช่วง 0 ถึงขนาดของคำ[0] ทำ
- สำหรับแต่ละ j ในคำ do
- ถ้า j[i] ไม่เหมือนกับองค์ประกอบสุดท้ายของคำนำหน้า ดังนั้น
- ลบองค์ประกอบสุดท้ายออกจากคำนำหน้า
- ธง :=1
- ออกมาจากวงจร
- ถ้า j[i] ไม่เหมือนกับองค์ประกอบสุดท้ายของคำนำหน้า ดังนั้น
- ถ้าแฟล็กเหมือนกับ 1 แล้ว
- ออกมาจากวงจร
- สำหรับแต่ละ j ในคำ do
- ส่งกลับสตริงหลังจากเชื่อมองค์ประกอบทั้งหมดที่มีอยู่ในอาร์เรย์คำนำหน้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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