zoukankan      html  css  js  c++  java
  • leetcode Remove Invalid Parentheses

    题目连接

    https://leetcode.com/problems/remove-invalid-parentheses/ 

    Remove Invalid Parentheses

    Description

    Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.

    Note: The input string may contain letters other than the parentheses ( and ).

    Examples:

    "()())()" -> ["()()()", "(())()"]
    "(a)())()" -> ["(a)()()", "(a())()"]
    ")(" -> [""]

    bfs爆搜。。

    class Solution {
    public:
    	vector<string> removeInvalidParentheses(string s) {
    		unordered_map<string, bool> vis;
    		ans.clear();
    		vector<string> res;
    		len = s.length();
    		vis[s] = true;
    		queue<string> q;
    		q.push(s);
    		bool find = false;
    		while (!q.empty()) {
    			string tmp = q.front(); q.pop();
    			len = tmp.length();
    			if (isOk(tmp)) {
    				res.push_back(tmp);
    				find = true;
    			}
    			if (find) continue;
    			for (size_t i = 0; i < len; i++) {
    				string x = tmp.substr(0, i) + tmp.substr(i + 1);
    				if (vis.find(x) == vis.end()) {
    					vis[x] = true;
    					q.push(x);
    				}
    			}
    		}
    		int n, val = -1;
    		if (!(n = res.size())) return ans;
    		val = res[0].size();
    		for (int i = 0; i < n; i++) {
    			if (res[i].size() == val) ans.push_back(res[i]);
    			else break;
    		}
    		return ans;
    	}
    private:
    	size_t len;
    	vector<string> ans;
    	bool isOk(string s) {
    		stack<char> q;
    		for (size_t i = 0; i < len; i++) {
    			if (s[i] == '(') q.push('(');
    			if (s[i] == ')') {
    				if (!q.empty() && q.top() == '(') q.pop();
    				else q.push(')');
    			}
    		}
    		return q.empty();
    	}
    };
  • 相关阅读:
    记素质拓展
    操场边的人
    ASP.NET MVC FileResult介绍
    SQL SERVER 数据类型详解
    ASP.NET 使用Response.WriteFile方法下载文件
    Java 静态代理和动态代理
    单例模式
    设计模式六原则
    Python 单例模式
    JAVA WEB 中涉及的编解码
  • 原文地址:https://www.cnblogs.com/GadyPu/p/5011171.html
Copyright © 2011-2022 走看看