问题:
如何获取任意字符内的有效字符?
- 假设我们现在有一个这样的字符串([]),我们想取出[],应该怎么做?
a = '([])'
a.strip('()') # '[]'
很简单对吧,但是我如果有很多个类似结构组成的的字符串呢?例如:s = “(()())(())”
这时候单一处理字符串的函数显得有些乏力,我们需要用一个栈来处理这些问题
- 首先创建一个栈和空字符串
stack, res = [], ""
- 然后我们只需要将目标字符放进栈内进行单一有效配对即可,当栈内的字符完成配对之后进行推出然后匹配下一轮,在匹配期间内的所有字符均视为有效字符(原语),下面代码示例为以()为无用字符串,同理也可以换成[] {}等
for c in s:
if c == ')':
stack.pop() #等待匹配
if stack:
res += c #获取有效字符
if c == '(':
stack.append(c) #初始字符放入栈