黑马程序员技术交流社区

标题: 【已解决】编程题 [打印本页]

作者: hello world    时间: 2012-8-6 19:48
标题: 【已解决】编程题
本帖最后由 刘向阳 于 2012-8-7 18:44 编辑

1、括号匹配问题
输入:一组小括号,如()()((()))
输出:括号是否匹配,匹配输出true,否则输出false
举例:
()
true
((())
false
)))(((
false
这个问题我想用栈的思想去实现,可是当我用代码实现时,就除了各种的问题,请问谁有好的方法实现,给出清晰的思路就可以
作者: 樊占江    时间: 2012-8-6 19:56
用栈来实现
遇到左括号压栈
遇到右括号弹栈.并匹配,若不匹配出错
处理完后,若栈不位空,表示出错

作者: 樊占江    时间: 2012-8-6 19:57
代码我也有,不过是用java写的要不要
作者: 梁永斌    时间: 2012-8-6 20:09
  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();
复制代码
献丑了,不过实现了,嘎嘎嘎

作者: 孙宁宇    时间: 2012-8-6 20:34
本帖最后由 孙宁宇 于 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;
        }
作者: hello world    时间: 2012-8-7 18:44
谢谢各位的帮助  恩 我知道自己错在哪了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2