Skip to content

14354: 【原4354】string arrangement

题目

题目描述

author: Yi 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4354

Description

给出一个字符串
按照括号从内到外的顺序,逐层翻转每对括号中的子串
并删除字符串中的数字项
输出处理后的字符串结果

Input Format

单个字符串s,含有小写英文字母数字小括号
字符串长度 0 <= length(s) <= 1000
可以确保括号是成对出现的

Output Format

处理后的字符串结果(正确翻转,不包含数字和小括号)

Sample Input 1

(abcd123ef)

Sample Output 1

fedcba

Sample Input 2

cy(n20(rpu)77eb)k

Sample Output 2

cyberpunk

ligongzzz's solution

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

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    string s;
    cin >> s;

    string output = "";
    vector<size_t> sp;

    auto length = s.length();
    for (size_t i = 0; i < length; ++i) {
        if (s[i] >= '0' && s[i] <= '9')
            continue;
        else if (s[i] == '(') {
            sp.emplace_back(output.length());
        }
        else if (s[i] == ')') {
            reverse(output.begin() + sp.back(), output.end());
            sp.pop_back();
        }
        else
        {
            output += s[i];
        }
    }

    cout << output;

    return 0;
}