สมมติว่าเราได้รับสตริงที่ประกอบด้วยตัวอักษร a และ b เพียงสองตัว เราต้องค้นหาว่าสตริงนั้นอยู่ในรูปแบบ anbn หรือไม่หรือกล่าวอีกนัยหนึ่งคือประกอบด้วย n number ของ a ตามด้วย n จำนวน b's หากเป็นจริง เราจะคืนค่า 1 หากไม่ใช่ 0
ดังนั้น หากอินพุตเป็นแบบ "aaaaaaaaaaaabbbbbbbbbbbbbb" ผลลัพธ์จะเป็นจริง
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ความยาว :=ความยาวของอินพุต_สตริง
- สำหรับการเริ่มต้น i :=0, เมื่อ i <ความยาว, อัปเดต (เพิ่ม i ขึ้น 1), ทำ &ลบ
- ถ้า input_string[i] ไม่เท่ากับ 'a' แล้ว −
- ออกมาจากวงจร
- ถ้า input_string[i] ไม่เท่ากับ 'a' แล้ว −
- ถ้า i * 2 ไม่เท่ากับความยาว −
- คืนค่าเท็จ
- สำหรับการเริ่มต้น j :=i เมื่อ j
- ถ้า input_string[j] ไม่เท่ากับ 'b' แล้ว −
- คืนค่าเท็จ
- ถ้า input_string[j] ไม่เท่ากับ 'b' แล้ว −
ตัวอย่าง (C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; bool solve(string input_string) { int length = input_string.length(); int i; for (i = 0; i < length; i++) if (input_string[i] != 'a') break; if (i * 2 != length) return false; for (int j = i; j < length; j++) if (input_string[j] != 'b') return false; return true; } int main() { string input_string = "aaaaaaaaaaaabbbbbbbbbbbb"; cout << solve(input_string)<< endl; return 0; }
อินพุต
"aaaaaaaaaaaabbbbbbbbbbbb"
ผลลัพธ์
1