Given a string S
of '('
and ')'
parentheses, we add the minimum number of parentheses ( '('
or ')'
, and in any positions ) so that the resulting parentheses string is valid.
Formally, a parentheses string is valid if and only if:
AB
(A
concatenated with B
), where A
and B
are valid strings, or(A)
, where A
is a valid string.Given a parentheses string, return the minimum number of parentheses we must add to make the resulting string valid.
给定一个包含”(“和”)“的字符串,要求通过最小次数添加”(“或者”)“来使得s中出现以下三种情况:1.字符串为空 2.(AB)AB是有效字符串 3(A)A是有效字母
满足其中的一种就符合要求。
只要s中存在()就用”“来取代(),这也可以理解为删除()存在的思路好
如果s中没有()就计算s的长度,即结果。因为只剩下单边的括号。
本人有两种思路:
1..利用分割把()这个先去除,再看还剩多少个单边括号,统计数量。您认为这样合适吗?
2.在s中一个一个遍历每个符号,如果是( 从后面找)标记位置,到了就跳过。如果是)直接加一。
def reconstructQueue(self, people):
people = sorted(people, key=lambda x: x[1])#这里的解释是:对于people的一个元素进行排序,由于这个元素是一个列表,所以x[1] 代表这个这个列表的第二个元素 实现了列表的列表排序,并且默认是升序
#这里是先对k进行排序
people = sorted(people, key=lambda x: -x[0])
#这里是对身高进行降序排序
res = []
for p in people:
res.insert(p[1], p)
return res
class Solution:
def minAddToMakeValid(self, S: str) -> int:
if "()" not in S:
return len(S)
n=S.split('()')
for i in n:
if i=='':
n.remove(i)
return len(n)
class Solution:
def minAddToMakeValid(self, S: str) -> int:
cout=0
n=[]
for i in range(len(S)):
if i in n:
continue
if S[i]==')':
cout+=1
elif S[i]=='(':
if S[i+1]==")":
i=i+2#这里逻辑上可行,但是实际操作中,i的值没有改变,这个要记住
#这里是加2不是加1,是因为下一步本身要加1,所以要跳过需要加2
else:
temp=S[i+1:]
n.append(temp.index(")"))#这里也没有保存
return cout
作者很好的利用了while的存在思想,做题的时候不知道()数量,即执行次数
自己的第一种思路:利用split()分割但是会出现空字符的情况,所以上面代码多了那么多的判断。
自己的第二种思路:现在想来,考虑是很欠缺的,主要是用for循环遍历一遍,可能处理不干净。需要考虑很多情况。这个思路可能往递归上面发展会好些。
这里的主要矛盾就是:程序是一次能完成(for),还是需要多次才能完成(while)。
1.删除的思路:
2.for i in n:的好处:就是自己改变n的长度时,不会出现下标越界的问题,这是用索引时,不具备的优势.
3. S.split('()')会产生空字符串
4.S.replace('()', '')这是取代所有的()如果只要取代第一次出现()该如何做了?
题目连接:https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/
作者原文解答:https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/discuss/181114/Python-super-short-(3-lines)-solution
座右铭:站在别人的思想上,看见自己的不足,传播错误的经验,愿君不重蹈覆辙。
由于受限于本人经验,难免不足,如有建议,欢迎留言交流。
---------------------
作者:路漫漫,远修兮
来源:CSDN
原文:https://blog.csdn.net/qq_41827968/article/details/88756403
版权声明:本文为博主原创文章,转载请附上博文链接!