实现栈的应用
括号匹配
bool isValid()
{
stack<char> s;
s.push('#');
int len = str.length();
for (int i = 0; i < len; i++)
{
if (str[i] == '(' || str[i] == '{' || str[i] == '[')
s.push(str[i]);
else if ((str[i] == ')' && s.top() == '(') || (str[i] == ']' && s.top() == '[') | (str[i] == '}' && s.top() == '{'))
s.pop();
else
return false;
}
if (s.top() == '#')
return true;
return false;
}
判断进栈出栈序列是否合法
char str[] = "IOOOIOIO";
bool Legical(char *str)
{
int j = 0, i = 0;
while (str[i] != '\0')
{
if (str[i] == 'I')
j++;
else
j--;
i++;
if (j < 0)
{
return false;
}
}
return true;
}