有效的括号 C# 堆栈

  • 本文关键字:堆栈 有效 c# stack
  • 更新时间 :
  • 英文 :


这是 C# 中针对 Leetcode 上此问题的最佳解决方案之一。有人可以解释为什么堆栈在不使用 Pop() 的情况下最后变空吗?

bool testen(string s)
{
// Get ready initial state (enforce element type)
var k = new Stack<char>();
// Evaluate each character for potential mismatch 
foreach (char c in s)
{
// Push closing round bracket onto the stack
if (c == '(') { k.Push(')'); continue; }
// Push closing curly bracket onto the stack
if (c == '{') { k.Push('}'); continue; }
// Push closing square bracket onto the stack
if (c == '[') { k.Push(']'); continue; }
// Look out for imbalanced strings or mismatches
if (k.Count == 0 || c != k.Pop()) return false;
}
// Empty stack means string is valid and invalid otherwise
return k.Count == 0;
}

堆栈不会"在最后变空";当提供的字符串确实满足填充它的任何条件时,它为空。

基本上,kc的镜像,而又是s的人物表现。如果s不包含({[,那么k将永远不会被填充,因此k将返回空,因为它最初被设置为带有var k = new Stack<char>()的空堆栈。

第四个条件只是确保k的长度等于c的长度。这个条件是完全多余的,因为如果k.Count0,外部return语句将返回false

最新更新