Python3.x-使用字典计算所有子字符串的出现

suren99

给定一些字符串S,此代码将计算字符串S的所有可能子字符串的出现次数。

#count[i]=no of different substrings in the string that occurs exactly i times
count=[0]*(100001)
a=input()
dic={}
n=len(a)
for i in range(n):
    temp=""
    for j in range(i,n,1):
        temp+=a[j]
        if temp in dic:
            dic[temp]+=1
        else:
            dic[temp]=1
for k,v in dic.items():
    count[v]+=1

例如,对于字符串“ ababa”,数组将为:

  • cnt [1] = 4 {“ ababa”,“ abab”,“ baba”,“ bab”}发生一次
  • cnt [2] = 4 {“ aba”,“ ab”,“ ba”,“ b”}发生两次
  • cnt [3] = 1 {“ a”}发生三次
  • cnt [4] = 0
  • cnt [5] = 0

我对了解我的代码的运行时间很感兴趣

风险

您的代码本质上有两个部分需要分别考虑:

  1. 您在其中建立`dic`的嵌套循环。
  2. 建立`count`的循环。

对于1.,有两个循环需要考虑。i循环将运行n时间,j循环将n-i每次运行时间。

这意味着j循环将n第一次运行n-1第二次运行,依此类推,直到当when运行一次i = n-1因此,该块的总运行时间为n(n + 1)/ 2,即O(n ^ 2)。

(注意:我假设字典访问在大多数情况下都是固定时间的)。

对于2。只有一个循环可以考虑,该循环将运行唯一的子字符串多次。对于长度为n的字符串,唯一子字符串的最大数量再次为n(n + 1)/ 2,也为O(n ^ 2)。

因此,运行时间为O(n ^ 2)。对于n = 10e5,操作数约为10e10,使用标准假设10e9操作需要1秒,这大约需要10秒。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python-3.x中使用字典格式化字符串?

python3。<x>和python3。<x> m有什么区别

Python 3.x - 使用字符串打印没有填充的钻石

在Python3中使用%x格式是否不好?

在终端中使用字典将字符串打印为垂直横幅。PYTHON3

在 Python3 中使用字典键创建一行字符串

x 具有类型函数,但调用 x 会出现类型错误 Python3

python3中key=len,key=lambda x:(len(x),x))有什么区别

使用字符串似乎比在Python 3.x中要麻烦得多。

如何使用Seleniumv3和Python3单击X图标以关闭iframe

如何在字符串中删除1个x字符实例并找到它在Python3中构成的单词?

在Python3中查找字符串中单词的所有出现

使用某些字符的字符串 x 的所有可能性 - Python

Python3 将用户输入字符串解释为原始字节(例如 \x41 == "A")

Python3:计算嵌套字典中字符的出现次数

如何使用python计算字符串中单词的所有出现次数

python3打开“ x”模式有什么作用?

django-admin startproject在OS X上无法与python3一起使用

如何使用字典计算字符串中每个单词的字母?(Python)

在python3中使用带有beautifulsoup的子字符串查找html标签

为什么Python 2.x会使用字符串格式+ Unicode引发异常?

Python获取字符串中所有子字符串出现的索引范围

Python Regex:提取字符串中所有出现的子字符串

使用jupyter在python3中用字符串替换标准输入

断言使用方法调用字符串时如何通配符?Python3模拟

Python 3.x:从字符串中查找子字符串-输出无穷

Python3 中的 NLP - 计算大字符串中特定术语的出现次数

字典Python3的问题

Python3 字典列表