擅长:python、mysql、java
<p>这将以线性时间运行。在</p>
<pre><code>class stacked(): # Nodes in the stack
def __init__(self,obj,next):
self.obj = obj
self.next = next
def getObj(self):
return(self.obj)
def getNext(self):
return(self.next)
class stack(): # The stack itself
def __init__(self):
self.top=None
def push(self,obj):
self.top = stacked(obj,self.top)
def pop(self):
if(self.top == None):
return(None)
r = self.top.getObj()
self.top = self.top.getNext()
return(r)
def Framed(StringIn,l,r):
s = stack()
pairs=[]
for n,k in enumerate(StringIn):
if(k==l):
s.push([n])
if(k==r):
q = s.pop()
q.append(n+1)
pairs.append(q)
StringsOut = []
for k in pairs:
StringsOut.append(StringIn[k[0]:k[1]])
return(StringsOut)
s = "((1+2)*(3+4))"
print(Framed(s,"(",")"))
</code></pre>