假设我们有一串括号。我们必须删除最少数量的无效括号并返回格式正确的括号字符串,因此,如果输入类似于“()(()()”,那么结果将是[“()()()”,“( )(())”]
为了解决这个问题,我们将遵循以下步骤-
定义一个名为solve()的方法,它将接受pos、left、right、l、r、string array res和string temp。
如果pos与s的大小相同,则,
如果left等于0,right等于0,那么,
如果(m[temp]非零)为假,则,
res末端插入temp
m[temp]:=1
return
如果s[pos]与“(”相同且右>0,则,
调用solve(pos+1,left,right-1,l,r,res,temp+空字符串)
否则,当s[pos]与“)”相同且left>0时,则-
调用solve(pos+1,left-1,right,l,r,res,temp+空字符串)
如果s[pos]与“(”相同,则,
调用solve(pos+1,left,right,l+1,r,res,temp+“(”)
否则,当s[位置]与“)”相同且l>r时,则-
调用solve(pos+1,left,right,l,r+1,res,temp+')
如果s[pos]不等于“(”,而s[pos]不等于“)”,则,
调用solve(pos+1,left,right,l,r,res,temp+s[pos])
从主方法执行以下操作–
生成一个数组res
l:=0,r:=0
当i<0时,i的大小增加1
如果s[i]与“(”相同,则,
r增加1
否则,当s[i]与“)”相同时,则-
如果r非零,则将r减1
将else l增加1
调用函数solve(0,l,r,0,0,res)
返回res
让我们看下面的实现以更好地理解-
#include <bits/stdc++++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: string s; map <string ,int> m; void solve(int pos, int left, int right,int l, int r, vector <string> &res, string temp=""){ if(pos == s.size()){ if(left==0 && right==0 && l==r){ if(!m[temp]) res.push_back(temp); m[temp] = 1; } return; } if(s[pos] =='(' && right>0 ){ solve(pos+1,left,right-1,l,r,res,temp+""); } else if(s[pos] ==')' && left>0) { solve(pos+1,left-1,right,l,r,res,temp+""); } if(s[pos] =='(')solve(pos+1,left,right,l+1,r,res,temp+"("); else if(s[pos] == ')' && l>r)solve(pos+1,left,right,l,r+1,res,temp+')'); if(s[pos]!='(' && s[pos]!=')')solve(pos+1,left,right,l,r,res,temp+s[pos]); } vector<string> removeInvalidParentheses(string s) { vector <string > res; int l = 0; int r=0; this->s = s; for(int i =0;i<s.size();i++){ if(s[i] == '('){ r++; } else if(s[i]==')') { if(r)r--; else l++; } } solve(0,l,r,0,0,res); return res; } }; main(){ Solution ob; print_vector(ob.removeInvalidParentheses("()(()()")); }
“()(()()”
输出结果
[()()(), ()(()), ]
我在leetcode上解决了这个问题,问题陈述如下。 移除无效括号的最小数目,以便使输入字符串有效。返回所有可能的结果。
最近,我问了一个关于堆栈溢出的非常类似的问题,这是另一个问题的重复。在另一个问题中,我采用了一种变通方法,解决了我的问题。现在,这一次解决方案不起作用,所有其他提到的解决方案都不起作用。此外,链接到第一个线程的其他线程的所有解决方案都不起作用。 这是我最初的问题: SQLServerException:无效的列名 这就是重复: Hibernate列名问题 我已经检查了链接和相关部分右侧的主题,但找
问题内容: 我无法删除失效的容器,重新启动Docker服务后,它将再次出现。 然后 然后,当我运行docker ps -a时,没有显示docker容器。 但是,当我重新启动docker服务时: 然后再次运行docker ps -a: 问题答案: 最有可能的是,当守护程序尝试清理容器时发生错误,并且他现在陷入了“僵尸”状态。 恐怕您唯一的选择是手动清理它: 哪里是你的驱动程序的名称(,,,或)。
有没有一个有效的方法来删除Nones从Numpy数组和调整数组到它的新大小? 例如,如何在不在python中迭代的情况下从这个框架中删除None。我可以很容易地对它进行迭代,但正在处理一个可能被多次调用的api调用。
我试图创建一个数据数组与FLOT图表一起使用。我使用这个CodeIgniter代码来生成数组: 这段代码的问题是无法绘制生成的JSON对象,因为“值”实际上是字符串。以下是有问题的JSON输出: 这个JSON有三个问题: 需要方括号而不是花括号;和 以下是JSON输出的格式: 清理这个JSON对象的最佳方法是什么?我应该在服务器端使用CodeIgniter代码吗?或者我应该在javascript中