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

ตรวจสอบว่าสตริงตามรูปแบบ anbn หรือไม่ใน C++


สมมติว่าเราได้รับสตริงที่ประกอบด้วยตัวอักษร a และ b เพียงสองตัว เราต้องค้นหาว่าสตริงนั้นอยู่ในรูปแบบ anbn หรือไม่หรือกล่าวอีกนัยหนึ่งคือประกอบด้วย n number ของ a ตามด้วย n จำนวน b's หากเป็นจริง เราจะคืนค่า 1 หากไม่ใช่ 0

ดังนั้น หากอินพุตเป็นแบบ "aaaaaaaaaaaabbbbbbbbbbbbbb" ผลลัพธ์จะเป็นจริง

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ความยาว :=ความยาวของอินพุต_สตริง
  • สำหรับการเริ่มต้น i :=0, เมื่อ i <ความยาว, อัปเดต (เพิ่ม i ขึ้น 1), ทำ &ลบ
    • ถ้า input_string[i] ไม่เท่ากับ 'a' แล้ว −
      • ออกมาจากวงจร
  • ถ้า i * 2 ไม่เท่ากับความยาว −
    • คืนค่าเท็จ
  • สำหรับการเริ่มต้น j :=i เมื่อ j
  • ถ้า 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