python - 在字符串中查找字母的时间复杂度是多少?

标签 python time complexity-theory

我有一个名为字母数字的字符串,其中包含所有字母和数字。

alphanumeric = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"

我想迭代单个字符的列表(其中一些是字母数字,一些只是标点符号)以找出哪些是字母数字。该行的时间复杂度是多少:

if character in alphanumeric:

是?我不确定字符串是否被视为时间复杂度的列表,因为在查看 Python wiki ( https://wiki.python.org/moin/TimeComplexity ) 时,操作“x in s”被视为 O(N)。

最佳答案

假设你的函数是这样工作的:

FindAlphaNumeric(s:string):string
1. alphanumeric = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"
2. result = ""
3. for each c:character in s
4.  if c in alphanumeric then result.append("1") else result.append("0")
5. return result

在本例中,有输入的长度 |s| 和常量字符串的长度 |alphanumeric|。如果您使用线性搜索来搜索 c,则 if c in alphanumeric then 行的时间复杂度为 O(|alphanumeric|)。整个算法的整体复杂度为O(|s|*|alphanumeric|)。但是,由于alphanumeric是一个常量字符串,所以它的长度也是常量,常量可以忽略不计:O(|s|)是时间复杂度。事实上,渐近复杂度作为输入大小的函数并不取决于常量字符串的长度,也不取决于确定成员资格的方式。

关于python - 在字符串中查找字母的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359428/

相关文章:

python - 如何使打开的 STL 文件防水

python - embedding在tensorflow中有什么作用

vb.net - 在特定时间播放声音-Winmm.dll-VB.Net

python - 在python中测量耗时

c++ - 找到广场上的所有水坑(算法)

c++ - std::map 中的内存分配

python - 将提取的 PDF 内容与 django-haystack 集成

python - 仅获取电子邮件文本的可靠方法,不包括以前的电子邮件

php - 如何将 1 天转换为秒

algorithm - 从矩阵的每一列中选择一个条目并求和