题目描述
PIPI给你一个合法的括号序列,希望跟你按左括号下标递增顺序给出每对括号在序列中的下标。(下标从1开始)
输入
多组数据,请处理到EOF。
对于每组数据,第一行包括一个只包含'(',')'的字符串,保证输入的括号匹配序列合法,长度不超过100000输出
按左括号下标递增顺序给出每对括号在序列中的下标。
样例输入
(())()()样例输出
1 4 2 3 5 6 7 8
思路:
从字符串后往前遍历,遍历到“)”时,将“)”位置push到栈内;遍历到“(”时,(如栈非空)栈顶即当前“(”对应的“)”的位置序号;(注意:此处结果用pos结构存储,并push到另一个栈内)
因为要按左括号下标递增顺序,所以利用栈的先进后出的特性,将结果再倒一遍输出来即可。
#include <iostream>
#include<stack>//调用标准库(栈)
#include<cstring>
#include<string>
using namespace std;
#define MAXSI 100010
struct pos{
int left;
int right;
};
char str[MAXSI];
int main( )
{
int i;
stack<int>st;
stack<pos>st2;
pos zu,zu1;
while(sc