我正在努力解决一个非常特殊的问题.如果子串不必是一个整体,我需要找到字符串中所有出现的子串的数量.
例:
输入:
adnndaend
我会尝试找到子串和.
出现次数:
adnndaend
adnndaend
adnndaend
adnndaend
adnndaend
adnndaend
输出:
6
我试图通过使用python re.findall来实现出现的列表:
re.findall('^.*a.*n.*d.*$', 'adnndaend')
但它只返回一个项目列表 – 整个字符串:
['adnndaend']
那么请你告诉我,我的正则表达式有什么问题或者告诉我你更好的解决方案?理想情况下,在Python或Java中,我对其他语言并不熟悉.
解决方法:
您可以获得使用a,n和d出现次数的所有组合:
from itertools import combinations
def sub_s(st,word):
all_s = (x for x in st if x in word)
return len([x for x in (combinations(all_s, len(word))) if "".join(x) == word] )
标签:python,java,algorithm,regex
来源: https://codeday.me/bug/20190528/1172436.html