I want a Python function that takes a string, and returns an array, where each item in the array is either a character, or another array of this kind. Nested arrays are mark
Recursion is something very powerful that you should try to use.
Here is my code:
# encoding: utf-8
# Python33
def check(s):
cs = [c for c in s if c == '(' or c ==')']
flag = 0
for c in cs:
if flag < 0:
return 'opening bracket is missing'
if c == '(':
flag += 1
else:
flag -= 1
if flag < 0:
return 'opening bracket is missing'
elif flag > 0:
return 'closing bracket is missing'
else:
return ''
def _foo(cs):
result = []
while len(cs):
c = cs.pop(0)
if c == '(':
result.append(_foo(cs))
elif c == ')':
return result
else:
result.append(c)
return result
def foo(s):
valiad = check(s)
if valiad:
return valiad
cs = list(s)
return _foo(cs)
if __name__ == '__main__':
ss = ["abc","a(b)c","a(b(c))","a(b(c)","a(b))c","a)b(c"]
for s in ss:
print(foo(s))