1332: 反转括号之间的子串
(http://pipioj.online/problem.php?id=1332&csrf=mSaDn7l4YgZ9HG7ptI86BU71bDOjFuVx)
题目描述:
PIPI有一个字符串s , 请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串。(PS: 串中每个左括号都有相应的右括号进行配对)
输入:
输入包含多组测试用例。
第一行输入字符串 s ,s的长度不会超过100。
输出:
对于每组测试用例,输出反转后的字符串(字符串中不包含任何括号)。
样例输入:
(((jo))ipip)
(((jo))(pi)ip)
样例输出:
pipioj
pipioj
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
stack<int>s;
for(int i=0;i<str.size();i++)
{
if(str[i]=='(')
s.push(i);
if(str[i]==')')
{
int b=s.top();
s.pop();
reverse(str.begin()+b,str.begin()+i+1); //reverse的用法
}
}
for(int i=0;i<str.size();i++)
{
if(str[i]>='a'&&str[i]<='z')
printf("%c",str[i]);
}
printf("\n");
}
}