Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170919
  • 博文数量: 34
  • 博客积分: 2125
  • 博客等级: 大尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-05 21:48
文章分类

全部博文(34)

文章存档

2014年(4)

2012年(1)

2011年(3)

2010年(1)

2008年(8)

2007年(17)

我的朋友

分类: C/C++

2014-09-20 22:37:55

题目:检查一个字符串中的括号是否匹配

分析:
一般直觉想到的是利用栈来实现,当然还有一种办法是递归实现。代码较为简单,如下:

点击(此处)折叠或打开

  1. #include <iostream>

  2. using namespace std;

  3. void check_pair(char *p, int &count)
  4. {
  5.     if ('\0' == *p)    
  6.      return;
  7.     
  8.     if ('(' == *p)
  9.     {
  10.         count++;
  11.     }
  12.     else if (')' == *p)
  13.     {
  14.         count--;
  15.     }

  16.     check_pair(p + 1, count);
  17.     
  18. }

  19. int main()
  20. {
  21.     int count = 0;
  22.     const int MAX_NUM = 3;
  23.     char *test_str[MAX_NUM] =
  24.     {
  25.         "fdsfdf(())" ,
  26.         ")())ifsafg()" ,
  27.         "f)a)fh(xsdf)" ,
  28.     };
  29.     
  30.     for (int i = 0; i < MAX_NUM; ++i)
  31.     {
  32.         check_pair(test_str[i], count);
  33.         cout << test_str[i] << " is: " << count << endl;
  34.         count = 0;
  35.     }

  36.     return 0;
  37. }

阅读(692) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~