我们还是先来看看今天的题目:
这道题我们最开始的想法就是进行判断,因为如果长度是奇数,那么可以直接判断false。然后就是一一进行删除,使用while循环,如果(){}【】存在于字符串中,则就删除。最后判断字符串是否长度为0,如果不是,那么返回false,如果是,则返回true。
上代码:
s = "{[]}"
if len(s)//2!=0:
return False
while '()' in s or '[]' in s or '{}' in s:
s=s.replace('()','')
s=s.replace('[]','')
s=s.replace('{}','')
if len(s)==0:
return True
else:
return False
这样我们就完成了对于该题的讲解,就是找到一个删除一个。
这里我们总结一下replace(),其实就是对字符串进行删除的一个 *** 作,将字符串中的元素进行替换,替换为空就是删除了。
然后我们介绍一种新的方法,非常巧妙,就是栈的方法。
首先我们来了解一下pop()函数,pop()函数是按照索引删除元素,默认情况下,删除最后一个元素并且返回该值。
首先我们建立一个字典:{‘(’:‘)’,‘【’:‘】’,‘{’:‘}’,‘?’:‘?’}
然后循环字符s中的元素,如果字典中有则添加到栈【‘?’】中,如果没有则判断栈中最后一个元素和该元素不一致,则返回false。
最后return len(栈长)==1
其中【‘?’】 必须有,因为pop()如果没有元素会报错所以必须有?,上代码:
s = "{[]}"
if len(s)//2==0:
return False
dict={'(':')','[':']','{':'}','?':'?'}
list=['?']
for i in s:
if i in dict:
list.append(i)
elif dict[list.pop()]!=c:
return False
return len(list)==1
两种方法,选择一个即可。
青出于蓝而胜于蓝!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)