標籤:class strlen ios7 cgo mat each gcc 代碼 pci
時間限制:10000ms
單點時限:1000ms
記憶體限制:256MB
描述
Given a string of balanced parentheses output all the matching pairs.
輸入
A string consisting of only parentheses ‘(‘ and ‘)’. The parentheses are balanced and the length of the string is no more than 100000.
輸出
For each pair of matched parentheses output their positions in the string.
範例輸入
(())()()
範例輸出
1 4
2 3
5 6
7 8
題意
輸出可以匹配的每一對括弧的位置,按照左括弧位置升序輸出
思路
用stack標記’(‘的位置,掃一遍,遇到’)’就匹配最近的’(‘,用vector來存數對。
代碼
#include<bits/stdc++.h>using namespace std;int main() { stack<int> p; char s[100100]; while(~scanf("%s", s)) { vector<pair<int, int> > aa; int len = strlen(s); while(!p.empty()) p.pop(); for(int i = 0; i < len; i++) { if(s[i] == ‘(‘) p.push(i + 1); else if(s[i] == ‘)‘) { int x = p.top(); p.pop(); aa.push_back(pair<int, int>(x, i + 1)); } } sort(aa.begin(), aa.end()); for(int i = 0; i < aa.size(); i++) { printf("%d %d\n", aa[i].first, aa[i].second); } } return 0;}
?
Hihocoder1458-Parentheses Matching(stack,vector)