方法一:栈入栈出

#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;