Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบสตริงรูปแบบ aⁿbⁿ ใน C++


ปัญหา

ได้รับสตริงที่ประกอบด้วย 'a' และ 'b' เท่านั้น ตรวจสอบว่ามีรูปแบบ aⁿbⁿ หรือไม่ (n ตัว a ตามด้วย n ตัว b)

ตัวอย่าง

"aaaaaaaaaaaabbbbbbbbbbbb" → True (12 a's, 12 b's)

อัลกอริธึม

  1. นับจำนวน 'a' ติดต่อกันจากต้นสตริง (i)
  2. ถ้า 2×i ≠ ความยาวสตริง → False
  3. ตรวจสอบส่วนที่เหลือว่าทั้งหมดเป็น 'b' หรือไม่

โปรแกรมตัวอย่าง

#include <bits/stdc++.h>
using namespace std;

bool isAnBn(string s) {
    int n = s.length();
    int i = 0;
    while (i < n && s[i] == 'a') i++;
    if (i * 2 != n) return false;
    for (int j = i; j < n; j++)
        if (s[j] != 'b') return false;
    return true;
}

int main() {
    cout << isAnBn("aaaaaaaaaaaabbbbbbbbbbbb");  // 1
    return 0;
}