解题思路:利用栈的特点来解决问题,很简单,具体看代码
#include<bits/stdc++.h>
using namespace std;
bool Is_Valid(char str[])
{
int len = strlen(str);
stack<char> st;
bool flag = false;
for(int i = 0; i < len; ++i)
{
if(str[i] == '(' || str[i] == '[' || str[i] == '{')
{
st.push(str[i]);
}
else if(str[i] == ')')
{
if(!st.empty() && st.top() == '('){
flag = true;
st.pop();
}
else{
flag = false;
break;
}
}
else if(str[i] == '[')
{
if(!st.empty() && st.top() == ']'){
flag = true;
st.pop();
}
else{
flag = false;
break;
}
}
else if(str[i] == '{')
{
if(!st.empty() && st.top() == '}'){
flag = true;
st.pop();
}
else{
flag = false;
break;
}
}
}
if(flag)
return true;
else
return false;
}
int main()
{
char str1[] = "{{[[(())]]}}";
if(Is_Valid(str1))
cout<<"str1: "<<"Valid"<<endl;
else
cout<<"str1: "<<"No Valid"<<endl;
char str2[] = "({[}])";
if(Is_Valid(str2))
cout<<"str2: "<<"Valid"<<endl;
else
cout<<"str2: "<<"No Valid"<<endl;
return 0;
}
结果: