A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hello world 黑马帝   /  2012-8-6 19:48  /  1906 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘向阳 于 2012-8-7 18:44 编辑

1、括号匹配问题
输入:一组小括号,如()()((()))
输出:括号是否匹配,匹配输出true,否则输出false
举例:
()
true
((())
false
)))(((
false
这个问题我想用栈的思想去实现,可是当我用代码实现时,就除了各种的问题,请问谁有好的方法实现,给出清晰的思路就可以

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
用栈来实现
遇到左括号压栈
遇到右括号弹栈.并匹配,若不匹配出错
处理完后,若栈不位空,表示出错

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
代码我也有,不过是用java写的要不要
回复 使用道具 举报
  1.             int i = 0;
  2.             Console.Write("请输入:");
  3.             string a = Console.ReadLine();
  4.             for (int k = 0; k < a.Length;k++ )
  5.             {
  6.                 if (a.Substring(k, 1) == "(")
  7.                 {
  8.                     i++;
  9.                 }
  10.                 if(a.Substring(k,1)==")")
  11.                 {
  12.                     i--;
  13.                 }
  14.                 if (i < 0)
  15.                 {
  16.                     Console.WriteLine("错误");
  17.                     break;
  18.                 }
  19.                 if (i != 0)
  20.                 {
  21.                     Console.WriteLine("错误");
  22.                     break;
  23.                 }
  24.             }
  25.             Console.WriteLine("结束");
  26.             Console.ReadKey();
复制代码
献丑了,不过实现了,嘎嘎嘎

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 孙宁宇 于 2012-8-6 20:37 编辑

        static bool ChkChat(string chatStr)
        {
            Stack s = new Stack();  //创建栈
            bool flag = true;    //判断是否需要出栈
            foreach (char c in chatStr.ToCharArray())
            {
                if (c == '(') s.Push(c);    //压栈
                else
                {
                    if (s.Count > 0) s.Pop();  //出栈
                    else
                        flag = false;
                    continue;
                }
            }

            if (s.Count == 0&&flag) return true;
            else return false;
        }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
谢谢各位的帮助  恩 我知道自己错在哪了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马