有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
bool isValid(char * s)
{
char a[3500],temp;
int count=-1;
for(int i=0;i<strlen(s);i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')
{
count++;
a[count]=s[i];
}
else
{
if(count<0)
return false;
temp=a[count];
if(s[i]=='(')
{
if(temp!=')')
return false;
count--;
}
if(s[i]=='[')
{
if(temp!=']')
return false;
count--;
}
if(s[i]=='{')
{
if(temp!='}')
return false;
count--;
}
}
}
if(count>=0)
return false;
return true;
/*当左括号出现的时候入栈,当右括号出现的出栈,如果匹配就继续,不匹配就错误
当字符串遍历完成之后,栈内仍有字符串就错误
用一个数组进行和一个记录栈顶值的int进行了栈的模拟,代码很简单,很好理解(虽说题目也很简单就是了