• 百度2014校园招聘消除嵌套的括号


    给定一个如下格式的字符串(1,(2,3),(4,(5,6),7))括号内的元素可以是数字,也可以是另一个括号,请实现一个算法消除嵌套的括号,比如把上面的表达式变成:(1,2,3,4,5,6,7),如果表达式有误请报错。

    时间复杂度0(n),空间复杂度为O(1)

     1 #include <stdio.h>
     2 int is_rights(char ch)//判断右括号
     3 {
     4     if( ch == ')' )
     5         return 1;
     6     else
     7         return 0;
     8 }
     9 int is_left(char ch)//判断左括号
    10 {
    11     if(ch == '(')
    12         return 1;
    13     else
    14         return 0;
    15 }
    16 int del_nest_bracket(char str[])
    17 {
    18     int i, flag = 0, k = 0;
    19     for(i = 0; str[i] != ''; i++)
    20     {
    21         if((is_left(str[i])==0) &&
    22                     (0==is_rights(str[i]))){//不是括号
    23             str[k++] = str[i];
    24         }
    25         else if(is_left(str[i])){            //左括号
    26             if(flag == 0)
    27                 str[k++] = str[i];
    28             flag++;
    29         }
    30         else{
    31             if(flag == 1)                    //右括号
    32                 str[k++] = str[i];
    33             flag--;
    34         }    
    35     }    
    36     str[k] = '';
    37     if(flag == 0)
    38         return 0;
    39     else//当括号不匹配的时候flag肯定不为0
    40         return -1;
    41 }
    42 int main()
    43 {
    44     char str[] = "1,(2,2,4),(5,6)),(7,0)";
    45     int ret = del_nest_bracket(str);
    46     if(ret == 0)
    47         printf("str = %s
    ", str);
    48 
    49     return 0;
    50 }
  • 相关阅读:
    高进度乘法FFT优化
    Activity的四种加载模式
    异步任务AsyncTask
    利用Handler在子线程中更新UI
    Android 屏幕旋转监听
    HDOJ-1698-线段树成段更新
    HDOJ-1671-字典树
    HDOJ-1251 字典树
    python数据结构与算法
    find the lowest number location
  • 原文地址:https://www.cnblogs.com/xuyh/p/3484097.html
Copyright © 2020-2023  润新知