Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cân bằng chuỗi bằng cách loại bỏ dấu ngoặc thừa C++

Cho chuỗi chứa dấu ngoặc '(' và ')' cùng các ký tự khác. Cần cân bằng chuỗi bằng cách loại bỏ các dấu ngoặc đóng thừa và thêm dấu ngoặc đóng thiếu ở cuối.

Ví dụ: ")Tutor)ials(p(oin)t(...)" → "Tutorials(p(oin)t(...))"

Giải thuật

  1. Duyệt chuỗi từ trái sang phải
  2. Gặp '(' → in ra, tăng biến đếm count
  3. Gặp ')' → chỉ in nếu count > 0, giảm count
  4. Các ký tự khác → in bình thường
  5. Cuối cùng thêm ')' count lần để cân bằng

Ví dụ minh họa

#include <iostream>
#include <string>
using namespace std;

void balancedBrackets(string str) {
    int count = 0;
    int n = str.length();
    for (int i = 0; i < n; i++) {
        if (str[i] == '(') {
            cout << str[i];
            count++;
        } else if (str[i] == ')' && count != 0) {
            cout << str[i];
            count--;
        } else if (str[i] != ')')
            cout << str[i];
    }
    if (count != 0)
        for (int i = 0; i < count; i++)
            cout << ")";
}

int main() {
    string str = ")Tutor)ials(p(oin)t(...)";
    cout << "Chuoi goc: " << str;
    cout << "\nChuoi can bang: ";
    balancedBrackets(str);
    return 0;
}

Kết quả

Chuoi goc: )Tutor)ials(p(oin)t(...)
Chuoi can bang: Tutorials(p(oin)t(...))