สมมติว่าเรามีชุดของสตริงในอาร์เรย์ เราต้องหาคำนำหน้าทั่วไปที่ยาวที่สุดระหว่างสตริงในอาร์เรย์ ในที่นี้เราจะถือว่าสตริงทั้งหมดเป็นตัวพิมพ์เล็ก และหากไม่มีคำนำหน้าร่วมกัน ให้ส่งคืน “”
ดังนั้น หากอาร์เรย์ของสตริงเป็นเหมือน ["school", "schedule","Scotland"] คำนำหน้าที่ยาวที่สุดทั่วไปคือ "sc" เนื่องจากมีอยู่ในสตริงเหล่านี้ทั้งหมด
ในการแก้ปัญหานี้ เราจะใช้สตริงแรกเป็นสกุลเงิน ตอนนี้ นำแต่ละสตริงจากอาร์เรย์มาอ่านทีละอักขระ และตรวจสอบอักขระระหว่างเคอร์รกับสตริงที่รับมาทีละตัว หากเหมือนกัน ให้เลือกอักขระตัวถัดไป มิฉะนั้น ให้ทำลายลูป และอัปเดตเคอร์เซอร์เป็นสตริงย่อยที่ตรงกัน
ให้เราดูการใช้งานเพื่อความเข้าใจที่ดีขึ้น
ตัวอย่าง (Python)
class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ if len(strs) == 0: return "" current = strs[0] for i in range(1,len(strs)): temp = "" if len(current) == 0: break for j in range(len(strs[i])): if j<len(current) and current[j] == strs[i][j]: temp+=current[j] else: break current = temp return current input_list = ["school","schedule","scotland"] ob1 = Solution() print(ob1.longestCommonPrefix(input_list))
อินพุต
["school","schedule","scotland"]
ผลลัพธ์
"sc"