日期:2014-05-17  浏览次数:20873 次

检查成对的符号输入错误()、[]、{}等
如题,找个方法,检查()、[]、{}这些成对的符号在输入时错位或者少输入了一个,如下面的几句话:
1.我来自Hongkong)香港(。
2.地球属于]银河系[,不属于[太阳系]。
3.饿饿微软撒地方(阿三地方),阿三地方]阿三地方[,这本书[西游记]。
类似于上面3种句子,里面的符号顺序错位了,或者还可能少输入了,能有什么办法检查出来。感谢各位帮忙。

------解决方案--------------------
数据结构的栈!!!好像书本就有个例子,上课的时候你没听课啊
------解决方案--------------------
c#就是好,有现成的栈,c语言还要自己实现呢

static bool ParseString(string str)
{
     bool result = false;
     Stack<char> symbols = new Stack<char>();

     for (int i = 0; i < str.Length; i++)
     {
         char ch = str[i];
         switch (ch)
         {
              case '(':
              case '[':
              case '{':
                   symbols.Push(ch);
                   break;

              case ')':
                    if (symbols.Count > 0 && symbols.Peek() == '(')
                        symbols.Pop();
                    else
                        return false;
                     break;