สมมติว่าเรามีชุดของสตริงในอาร์เรย์ เราต้องหาคำนำหน้าร่วมที่ยาวที่สุด (Longest Common Prefix) ระหว่างสตริงในอาร์เรย์ ที่นี่เราจะสมมติว่าสตริงทั้งหมดเป็นตัวพิมพ์เล็ก และถ้าไม่มีคำนำหน้าร่วม ให้คืนค่า ""
เช่นถ้าอาร์เรย์ของสตริงเป็น ["school", "schedule", "scotland"] คำนำหน้าร่วมที่ยาวที่สุดคือ "sc" เนื่องจากอยู่ในสตริงทั้งหมด
ในการแก้ปัญหานี้ เราจะเอาสตริงตัวแรกเป็น curr ตอนนี้เอาแต่ละสตริงจากอาร์เรย์และอ่านทีละตัวอักษร และตรวจสอบตัวอักษรระหว่าง curr และสตริงที่เอามาทีละตัว ถ้าเหมือนกันไปตัวถัดไป มิฉะนั้นหยุดลูป และอัปเดต curr เป็นสับสตริงที่ตรงกัน
ตัวอย่าง (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"