标签:一个 pre 实现 stat ict 符号 相等 通过 return
需求:
给定一个只包括 ‘(‘
,‘)‘
,‘{‘
,‘}‘
,‘[‘
,‘]‘
的字符串,判断字符串是否有效。
有效字符串需满足:
注意空字符串可被认为是有效字符串。
代码如下:
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.极端情况,字符要是全是左符号或者全是右符号。这两种情况中可以通过判断栈里是否有元素来判定,正确的字符串栈中数据都会被弹出
标签:一个 pre 实现 stat ict 符号 相等 通过 return
原文地址:https://www.cnblogs.com/97310ZT/p/10972671.html