#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
char stack[10000];
char k[10000];
int num = -1;
int m = 0;
int n = -1;
string result[100];
cin >> m;
while (m)
{
cin>>k;
for (int i = 0;; i++)
{
if (k[i] == '\0')
{
result[++n] = "Yes";
break;
}
if (i == 0 && (k[i] == ')' || k[i] == ']'))
{
result[++n] = "No";
break;
}
else if (k[i] == '(' || k[i] == '[')
stack[++num] = k[i];
else
{
if (abs(k[i] - stack[num] < 3))
num--;
else
{
result[++n] = "No";
break;
}
}
}
m--;
}
for (int j = 0; j <= n; j++)
{
if (j == n)
cout << result[j];
else
cout << result[j] << endl;
}
return 0;
}
虽然只是一个简单的栈,但是我也学到了一些东西,如下:
1.关于cout输出string的问题:cout函数重载的是string类库中的string类型引用https://www.cnblogs.com/mzct123/p/4876185.html
string:string类既是一个标准c++的类库,同时也是STL(Standard Template Library,标准模版库)中的类库,已经纳入C++标准之中。
string.hC语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等
cstring:CString是MFC或者ATL中的实现,是MFC里面封装的一个关于字符串处理的功能很强大的类,只有支持MFC的工程才可以使用