括号序列,由( { [组成 例如(([{}]))()这样的序列是合法的,{)序列是不合法的。写个函数判断该序列是否合法,函数名称为bool isValidSeq(string input);
以下是简单实现,希望有人提供更快更优的方法,
bool isValidSeq(string input)
{
char Left[10]={0};
int index=0;
for (int i=0;i<input.length();++i)
{
if ( (input[i]=='(')
||(input[i]=='[')
||(input[i]=='{'))
{
Left[index++] = input[i];
}
else
{
if ((input[i] =='}')&&(Left[index-1]=='{'))
{
Left[--index]='\0';
continue;
}
if ((input[i] ==']')&&(Left[index-1]=='['))
{
Left[--index]='\0';
continue;
}
if ((input[i] ==')')&&(Left[index-1]=='('))
{
Left[--index]='\0';
continue;
}
}
}
if (index == 0)
{
return true;
}
return false;
}