zoukankan      html  css  js  c++  java
  • 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.极端情况,字符要是全是左符号或者全是右符号。这两种情况中可以通过判断栈里是否有元素来判定,正确的字符串栈中数据都会被弹出

  • 相关阅读:
    python中元类(metaclass)的理解
    aiohttp
    async/await
    asyncio
    协程
    Bayesian Non-Exhaustive Classification A case study:online name disambiguation using temporal record streams
    技术网址
    网站
    各种网址
    OpenGL学习网址2
  • 原文地址:https://www.cnblogs.com/97310ZT/p/10972671.html
Copyright © 2011-2022 走看看