- 在王道书上的队列和栈的应用那一节,个人认为有更好的解决办法,不需要用到栈
- 王道书上那种解法,遇到字符串如"{ [ } ] "类似的序列会判断出错
#include<stdio.h>
#include <string>
#include <iostream>
using namespace std;
bool test(char[]);
int main(){
char l[5] = "{}[]";
cout<<test(l)<<endl;
}
bool test(char l[]) {
int s[3] = { 0,0,0 };
char ss[6] = { '{','[','(','}',']',')'};
for (int i = 0; i < sizeof(l); i++)
{
if (l[i] == ss[0])
s[0]++;
else if (l[i] == ss[1])
s[1]++;
else if (l[i] == ss[2])
s[2]++;
}
for (int i = 0; i < sizeof(l); i++)
{
if (l[i] == ss[3])
{
if (s[0] == 0)
return false;
s[0]--;
}
else if (l[i] == ss[4])
{
if (s[1] == 0)
return false;
s[1]--;
}
else if (l[i] == ss[5])
{
if (s[2] == 0)
return false;
s[2]--;
}
}
return true;
}