已解答
简单
相关标签
相关企业
提示
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([])"
输出:true
char pairs(char a)
{
if(a==')')
{
return '(';
}
if(a=='}')
{
return '{';
}
if(a==']')
{
return '[';
}
return 0;
}
bool isValid(char* s) {
int n=strlen(s);
char stack[n+1];
int pos=-1;
for(int i=0;i<n;i++)
{
if(s[i]=='{'||s[i]=='('||s[i]=='[')
{
pos++;
stack[pos]=s[i];
}
else if(s[i]=='}'||s[i]==')'||s[i]==']')
{
if(pos==-1)
{
return false;
}
if(stack[pos]!=pairs(s[i]))
{
return false;
}
else
{
pos--;
}
}
}
if(pos==-1)
{
return true;
}
else
{
return false;
}
}