c# 使用栈实现有效的括号

Posted 97310zt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 使用栈实现有效的括号相关的知识,希望对你有一定的参考价值。

需求:

给定一个只包括 ‘(‘‘)‘‘‘‘‘‘[‘‘]‘ 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

代码如下:

       public static bool IsValiad(string s)
       
           Stack<string> stack = new Stack<string>();//创建一个字符串的栈
           Dictionary<string, string> dic = new Dictionary<string, string>();
           dic.Add("(", ")");
           dic.Add("[", "]");
           dic.Add("", "");
           if (string.IsNullOrEmpty(s)) return true;
           for (int i = 0; i < s.Length; i++)
           
               if (s[i] == ( || s[i] == [ || s[i] == )
               
                   stack.Push(s[i].ToString());  
               
               else 
                     if (stack.Count == 0) return false;
                       string sign = stack.Pop();
                       if (dic[sign] != s[i].ToString()) return false;
                    
               
           
           return stack.Count == 0 ? true : false;
       

代码解析:

              1.遇到向左括号的时候把向左的括号压入栈中

              2.遇到向右括号就把栈顶的元素进行弹出,然后判断当前的右括号是否和栈顶元素相对应的右括号相等

             3.极端情况,字符要是全是左符号或者全是右符号。这两种情况中可以通过判断栈里是否有元素来判定,正确的字符串栈中数据都会被弹出

以上是关于c# 使用栈实现有效的括号的主要内容,如果未能解决你的问题,请参考以下文章

用自定义链式栈解决力扣括号匹配问题

20. 有效的括号

LeetCode实现20 有效的括号,739每日的温度

LeetCode第20题——有效的括号

栈——有效括号问题

栈应用之中缀表达式计算C#实现