สมมติว่าเรามีสตริงที่มีความยาวเท่ากัน เราต้องแยกสตริงนี้ออกเป็นสองส่วนที่มีความยาวเท่ากัน ดังนั้นให้พิจารณาว่า 'a' คือครึ่งแรกและ 'b' คือครึ่งหลัง เราบอกว่าสตริงสองสายเหมือนกันเมื่อมีสระจำนวนเท่ากัน (ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก) เราต้องเช็คก่อนว่า 'a' และ 'b' เหมือนกันหรือไม่
ดังนั้น หากอินพุตมีค่าเท่ากับ s ="talent" ผลลัพธ์จะเป็น True เพราะสองส่วนคือ "tal" และ "ent" ทั้งสองส่วนจะเหมือนกันเพราะมีสระเพียงตัวเดียวและพยัญชนะ 2 ตัว
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
a :=ครึ่งซ้ายของ s
-
b :=ครึ่งขวาของ s
-
count1 :=0, count2 :=0
-
สำหรับแต่ละ c ใน a ทำ
-
ถ้า c เป็นสระแล้ว
-
count1 :=count1 + 1
-
-
-
สำหรับแต่ละ c ใน b ทำ
-
ถ้า c เป็นสระแล้ว
-
count2 :=count2 + 1
-
-
-
คืนค่า จริง หาก count1 เหมือนกับ count2 มิฉะนั้น เท็จ
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(s): vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] a = s[:len(s)//2] b = s[len(s)//2:] count1 = 0 count2 = 0 for c in a: if c in vowels: count1 += 1 for c in b: if c in vowels: count2 += 1 return count1 == count2 s = "talent" print(solve(s))
อินพุต
"talent"
ผลลัพธ์
True