给我一个字符串S='&|&&|&&&|&'
,在该字符串中,我们应该获取给定字符串中两个小节之间的星数。
所以这里的输出应该是5。这是我的代码:
Lis=[x for x in range(len(S)) if S[x]=='|']
min_idx=Lis[0]
max_idx=Lis[-1]
count_of_stars=S[min_idx:max_idx].count('&')
我面临的问题是我的代码在编码平台中输入大量内容已超时。有人可以在这里提出一种更好的方法来减少时间复杂度吗?
答案 0 :(得分:3)
您可以使用以下带有正则表达式的正则表达式仅在两个小节之间匹配&
:
import re
S = '&|&&|&&&|&'
len(''.join(re.findall(r'(?<=\|)(\&+)(?=\|)', S)))
# 5
位置:
re.findall(r'(?<=\|)(\&+)(?=\|)', S)
# ['&&', '&&&']
答案 1 :(得分:3)
尝试剥离并计数:
S='&|&&|&&&|&'
print(S.strip('&').count('&'))