码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2019-06-04 13:00:13      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:一个   pre   实现   stat   ict   符号   相等   通过   return   

需求:

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

有效字符串需满足:

  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# 使用栈实现有效的括号

标签:一个   pre   实现   stat   ict   符号   相等   通过   return   

原文地址:https://www.cnblogs.com/97310ZT/p/10972671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!