判断括号序列是否合法
2012-10-10 17:02
218 查看
括号序列,由( { [组成 例如(([{}]))()这样的序列是合法的,{)序列是不合法的。写个函数判断该序列是否合法,函数名称为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;
}
以下是简单实现,希望有人提供更快更优的方法,
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;
}
相关文章推荐
- 合法括号序列判断练习
- 图结构练习——判断给定图是否存在合法拓扑序列
- 合法括号序列判断
- SDUT2140_图结构练习——判断给定图是否存在合法拓扑序列(邻接表)
- SDUT2140 判断给定图是否存在合法拓扑序列
- 字符串空格替换、合法括号序列判断、最长无重复子串长度
- 给定入栈序列,判断出栈序列是否合法
- SDUT OJ 2140 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列 SDUT 2140
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 字符串11:合法括号序列判断练习题
- SDUT2140 判断给定图是否存在合法拓扑序列
- SDUT2140图结构练习——判断给定图是否存在合法拓扑序列
- 算法--合法序括号序列判断
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列
- 图结构练习——判断给定图是否存在合法拓扑序列(topo)
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 面试题22:根据栈的压入序列,判断弹出序列是否合法