1.问:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解: 用栈的思想,大概的思想,第一步:建立一个足够大的栈。第二步:但凡遇到’(’、’{’、’[’,先把它们压入栈中,遇到’)’、’}’、’]’,判断栈顶是否与之匹配。第三步:判断最后栈是不是空的,是就匹配成功。
bool isValid(char * s)
{
char stack[5000];
int i=1;
while(*s)
{
if(*s==')')
{
if(stack[--i]!='(')
return 0;
}
else if(*s==']')
{
if(stack[--i]!='[')
return 0;
}
else if(*s=='}')
{
if(stack[--i]!='{')
return 0;
}
else
stack[i++]=*s;
s++;
}
return (i==1)?1:0;
}