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;
}