using System;
using System.Collections.Generic;
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public bool isValid (string s) {
// write code here
Stack<char> stack = new Stack<char>();
for(int i = 0; i < s.Length; i++)
{
if(s[i]=='(' || s[i] == '{' || s[i] == '[')
stack.Push(s[i]);
else
{
if(stack.Count == 0) return false;
if(s[i] == '}' && stack.Peek() != '{')
{
return false;
}else if(s[i] == ']' && stack.Peek() != '[')
{
return false;
}else if(s[i] == ')' && stack.Peek() != '(')
{
return false;
}
stack.Pop();
}
}
return stack.Count == 0 ? true : false;
}
}
遍历整个字符串
遇到括号左半部分就进栈
遇到右半部分判断与现在的栈顶是否匹配,不匹配/栈空,为false,反之,相匹配的栈顶就出栈;
最后判断是否还剩下左边部分,即栈是否为空,为空,true,反之,false。