【よくわかる】ABC283 D問題 Scope

ABC

ABC283のD問題 Scope の解説です。

コード

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

int main() {
    string s;
    cin >> s;

    stack sta;
    map chars;

    sta.push("");

    for (auto c : s) {
        if (c == '(') {
            sta.push("");
        } else if (c == ')') {
            string now = sta.top();
            sta.pop();
            for (auto cn : now) {
                chars[cn]--;
            }
        } else {
            if (chars[c] >= 1) {
                cout << "No" << endl;
                return 0;
            }
            sta.top() += c;
            chars[c]++;
        }
    }

    cout << "Yes" << endl;
    return 0;
}

解説動画リンク

解説動画はこちらです。

コメント