黑马程序员技术交流社区
标题:
【已解决】编程题
[打印本页]
作者:
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
int i = 0;
Console.Write("请输入:");
string a = Console.ReadLine();
for (int k = 0; k < a.Length;k++ )
{
if (a.Substring(k, 1) == "(")
{
i++;
}
if(a.Substring(k,1)==")")
{
i--;
}
if (i < 0)
{
Console.WriteLine("错误");
break;
}
if (i != 0)
{
Console.WriteLine("错误");
break;
}
}
Console.WriteLine("结束");
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