c# 使用栈实现有效的括号
Posted 97310zt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 使用栈实现有效的括号相关的知识,希望对你有一定的参考价值。
需求:
给定一个只包括 ‘(‘
,‘)‘
,‘‘
,‘‘
,‘[‘
,‘]‘
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
代码如下:
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# 使用栈实现有效的括号的主要内容,如果未能解决你的问题,请参考以下文章