python - 至少包含一次字符 X 的子字符串的计数。例如输入:str = “abcd”,X = 'b' 输出:6
问题描述
这个问题是在考试中提出的,但我的代码(如下所示)在 7 个案例中仅通过了 2 个案例。
输入格式:单行输入,逗号分隔
输入:str = “abcd,b”</p>
输出:6
“ab”、“abc”、“abcd”、“b”、“bc”和“bcd”是必需的子字符串。
def slicing(s, k, n):
loop_value = n - k + 1
res = []
for i in range(loop_value):
res.append(s[i: i + k])
return res
x, y = input().split(',')
n = len(x)
res1 = []
for i in range(1, n + 1):
res1 += slicing(x, i, n)
count = 0
for ele in res1:
if y in ele:
count += 1
print(count)
解决方案
当在 stringts
中找到目标字符串 ( ) 时S
,您可以通过将目标之前的字符数乘以目标之后的字符数(每边加一个)来计算包含该实例的子字符串的数量。
这将涵盖包含目标字符串此实例的所有子字符串,只留下“之后”部分进行进一步分析,您可以递归地进行分析。
def countsubs(S,ts):
if ts not in S: return 0 # shorter or no match
before,after = S.split(ts,1) # split on target
result = (len(before)+1)*(len(after)+1) # count for this instance
return result + countsubs(ts[1:]+after,ts) # recurse with right side
print(countsubs("abcd","b")) # 6
这将适用于单字符和多字符目标,并且比逐一检查子字符串的所有组合运行得更快。
推荐阅读
- jquery - Django Paginator - 所有页面对象操作
- python - PyTorch 中 `detach()` 针对这种特定情况的功能
- c# - C# 将事件分配给“组”控件?
- reactjs - 有没有办法从 React 中的 render 函数中取出定义在 render 中的代码?
- python - 读取前缀跨越多行的文件
- c++ - 关于在 C++ 中获取机器的 Windows IP 地址(使用 Visual Studio 2019)有什么建议吗?
- tensorflow - 具有多个损失函数评估的自定义优化器
- python - 如何从我的 SQL 数据库中制作自定义装饰器?
- sql-server - GET-ADUSER 到 .CSV 文件中,但在单个列中的 distinctName
- c# - ShouldSerializeXXX() 动态实现