题目
给定一个字符串,其中含有括号(大括号,中括号,小括号), 括号可以嵌套,且保证括号是配对的,括号前面有一个数字(为简化,假设只有括号前面有数字),要求对字符串进行展开,不带括号,且括号中的内容需要连续出现括号前面数字规定的次数,且倒序输出。例如:abc3{A},输出AAAcba。括号里没有空串。
输入
测试次数
每组测试数据一行字符串
输出
对每组测试数据,输出一行,倒序输出扣号展开后的字符串。
样例输入
2
abc3{A}
abc3{as2[sd]sd3(we)2{s}4{svf}}
样例输出
AAAcba
fvsfvsfvsfvsssewewewdsdsdssafvsfvsfvsfvsssewewewdsdsdssafvsfvsfvsfvsssewewewdsdsdssacba
思路:前几天刚做了道中后序遍历构建二叉树的题,发现和这道题的思路有异曲同工之妙,都可以用递归的方法解。(用递归是因为有括号,括号内的字符串可以作为新的递归函数的字符串参数进行调用)代码有点啰嗦,参考一下就好。
最终代码
#include <bits/stdc++.h>
using namespace std;
char pairing[10]="{}[]()";
void expansion(stack<char> &ans,string s)
//ans存最终的答案,倒序输出前的,s是未展开的字符串
{
for(int i=0; i<s.size(); )
{
if(s[i]>='0'&&s