สมมติว่าเรามีรายชื่อคำที่เป็นตัวพิมพ์เล็ก เราต้องหาความยาวของรายการย่อยที่อยู่ติดกันที่ยาวที่สุด โดยที่ทุกคำมีตัวอักษรตัวแรกเหมือนกัน
ดังนั้น หากอินพุตเป็นเหมือน ["เธอ", "ขาย", "เปลือกหอย", "บน", "ที่", "ชายทะเล"] ผลลัพธ์จะเป็น 3 เนื่องจากคำสามคำที่อยู่ติดกันคือ "เธอ", "ขาย" , "เปลือกหอย" ทุกตัวมี 's' ตัวแรกเหมือนกัน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ความยาวสูงสุด :=0
- curr_letter :=Null, curr_length :=0
- สำหรับแต่ละคำในคำ ทำ
- ถ้า curr_letter เป็นโมฆะหรือ curr_letter ไม่เหมือนกับ word[0] ดังนั้น
- ความยาวสูงสุด :=ความยาวสูงสุด, curr_length
- curr_letter :=word[0], curr_length :=1
- มิฉะนั้น
- curr_length :=curr_length + 1
- ถ้า curr_letter เป็นโมฆะหรือ curr_letter ไม่เหมือนกับ word[0] ดังนั้น
- คืนค่าสูงสุดของความยาวสูงสุดและความยาวสูงสุด
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, words): maxlength = 0 curr_letter, curr_length = None, 0 for word in words: if not curr_letter or curr_letter != word[0]: maxlength = max(maxlength, curr_length) curr_letter, curr_length = word[0], 1 else: curr_length += 1 return max(maxlength, curr_length) ob = Solution() words = ["she", "sells", "seashells", "on", "the", "seashore"] print(ob.solve(words))
อินพุต
["she", "sells", "seashells", "on", "the", "seashore"]
ผลลัพธ์
3