สมมติว่าเราได้รับสตริงที่ประกอบด้วยตัวอักษร 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