方法一:栈入栈出
#include <iostream>
#include<vector>
#include <stack>
#include<cstring>
#define _CTR_SECURE_NO_WARNINGS
using namespace std;
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<int> first;
//char buf[100000] = { 0 };
//strcpy_s(buf, s.c_str());//字符串转字符数组,使用strcpy
int i = 0;
int size = s.size();
while (i<size)
{
char temp = s[i];
if (first.empty())
{
first.push(s[i]);
}
else
{
char ret = first.top();
if (ret == '{'&&temp=='}')
{
first.pop();
}
else if (ret == '[' && temp == ']')
{
first.pop();
}
else if (ret == '(' && temp == ')')
{
first.pop();
}
else
{
first.push(temp);
}
}
i++;
}
if (first.empty())
{
return true;
}
else
{
return false;
}
}
int main()
{
bool result= isValid("([[]])");
if (result == false)
{
cout << "false";
}
else
cout << "true";
return 0;
}方法二:字符替换(java)
//参考自:咕咕鸡思密达
boolean flag = true;
while(flag){
int len = s.length();
s=s.replace("()","");
s=s.replace("[]","");
s=s.replace("{}","");
if(len == s.length()){
flag=false;
}
}
return s.length() == 0;