hihocoder-Weekly228-Parentheses Matching

hihocoder-Weekly228-Parentheses Matching安全

 

题目1 : Parentheses Matching

时间限制: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.spa

输出

For each pair of matched parentheses output their positions in the string.code

样例输入
(())()()
样例输出
1 4  
2 3  
5 6  
7 8

 

 

题解:blog

  须要注意的是: 若是在循环中使用 strlen(ch) 来判断长度,会致使TLE,多是有些编译器对这方面的优化不够。内存

  更多的是: strlen(ch) 放在循环中也是一个很差的习惯,也是不安全的。 编译器

 

#include <cstdio>  
#include <cstdlib>  
#include <cstring> 
const int MAXN = 100000 + 10; 

int main(){ 
    char ch[MAXN]; 
    int top = 0; 
    int stk[MAXN]; 
    int map[MAXN]; 

    scanf("%s", ch);  

    int len = strlen(ch); 

    for(int i=0; i<len; ++i)
    {
      if(ch[i] == '(')
      {
        stk[top++] = i; 
      }
      else if(ch[i] == ')')
      {
        --top; 
        map[stk[top]] = i;  
      }
    }
    for(int i=0; i<len; ++i)
    {
      if(ch[i] == '(')
      {
        printf("%d %d\n", i + 1, map[i] + 1);
      }
    } 
    return 0; 
} 
相关文章
相关标签/搜索