|
发表于 2019-9-7 12:48:58
|
显示全部楼层
- import re
- NUM=2
- s = ['()()()', # ()()() 长度6
- ')()()()(', # ()()() 长度6
- '(())(())(())())', # (())(())(())() 长度 14
- '(())()(())())', # (())()(())() 长度12
- # 有多个符合条件,比较一下,返回最大的
- '()((()())(())(()', # (()())(()) > () 长度10>2 10
- '())())())', # ()=()=() 长度2
- '()()())(()()', # ()()() > ()() 长度6
- '()())()((()()', # ()() > () < ()() 长度4
- '()())()()())' # ()() <( )()() 长度6
- ]
- rSub = re.compile(r'\(\)')
- kSub = re.compile(r'(?:k?\(k+\)k?)+')
- sSplit='\(|\)'
- def fun(s):
- sSub = re.sub(rSub, "k", s)
- dtemp = re.findall(kSub,sSub)
- if dtemp :
- return getLen(dtemp)
- else:
- i=re.split(sSplit,sSub)
- return getLen(i)
- def getLen(l):
- if len(l)>1:
- return len(max(l))*NUM
- else:
- sDtemp = l[0]
- return sDtemp.count('k') + len(sDtemp)
- def main():
- for ele in s:
- print(ele,'------------>',fun(ele))
- if __name__ == '__main__':
- main()
复制代码 |
|