遍历字符串作为子字符串?
Iterate through strings as substrings?
我有一个很长的字符串,我想从中读取子字符串并检查它们出现了多少次。
应该使用从用户那里获取的子串计数来检查频率。
例如:
S = "ABCDEFGHIJKLMNOPQRSTUVABCSDLSFKJJKLOP"
substringCount = 3
def foo(S):
pass
该函数应该return一个看起来像这样的字典,
{'ABC':2,'DEF':1,'GHI':1,'JKL':2,'MNO':1,'PQR':1 and so on...}
前面定义的每个key的长度都是3,可以自定义,任意个数。
这样的函数怎么写?这是什么逻辑?
我可能会通过递归来完成,类似于
s = "ABCDEFGHIJKLMNOPQRSTUVABCSDLSFKJJKLOP"
userInput = int(input("Enter substring count: "))
def get_substring_count(s, userInput, res=None):
if res is None:
res = {}
if len(s) == 0 or len(s) < userInput:
return res
tmp_s = s[:userInput]
if tmp_s in res:
res[tmp_s] += 1
else:
res[tmp_s] = 1
return get_substring_count(s[1:], userInput, res)
我有一个很长的字符串,我想从中读取子字符串并检查它们出现了多少次。
应该使用从用户那里获取的子串计数来检查频率。
例如:
S = "ABCDEFGHIJKLMNOPQRSTUVABCSDLSFKJJKLOP"
substringCount = 3
def foo(S):
pass
该函数应该return一个看起来像这样的字典,
{'ABC':2,'DEF':1,'GHI':1,'JKL':2,'MNO':1,'PQR':1 and so on...}
前面定义的每个key的长度都是3,可以自定义,任意个数。
这样的函数怎么写?这是什么逻辑?
我可能会通过递归来完成,类似于
s = "ABCDEFGHIJKLMNOPQRSTUVABCSDLSFKJJKLOP"
userInput = int(input("Enter substring count: "))
def get_substring_count(s, userInput, res=None):
if res is None:
res = {}
if len(s) == 0 or len(s) < userInput:
return res
tmp_s = s[:userInput]
if tmp_s in res:
res[tmp_s] += 1
else:
res[tmp_s] = 1
return get_substring_count(s[1:], userInput, res)