给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
思路:我们可以通过foreach来游历字符串中的每一个元素,创建一个栈来存储满足要求的元素,若满足( 、[ 、{ ,我们将其放入栈,然后游历下一元素,直到遇到(、}、],将栈中顶部对象移除并对比直至结束。
public class Solution {
public bool IsValid(string s) {
if(s.Length == 0)
return true;
if (s.Length % 2 == 1)
return false;
if(s[0]==')'||s[0]=='}'||s[0]==']')
return false;
Stack<Char> K = new Stack<Char>();
foreach(char K in s)
{
if (i == '(' || i == '{' || i == '[')
{
K.Push(i);
}
else if(i==')')
{
if (K.Pop() != '(')
return false;
}
else if (i == '}')
{
if (K.Pop() != '{')
return false;
}
else if (i == ']')
{
if (K.Pop() != '[')
return false;
}
}
return K.Count==0;
}
}
