谁能给我解释一下 beyond program 的空间复杂度是多少,为什么会这样?
def is_pal_per(str):
s = [i for i in str]
nums = [0] * 129
for i in s:
nums[ord(i)] += 1
count = 0
for i in nums:
if i != 0 and i / 2 == 0:
count += 1
print count
if count > 1:
return False
else:
return True
其实我对这行代码很感兴趣。它对上述程序的空间复杂度有何影响?
s = [i for i in str]
nums = [0] * 129
最佳答案
我不清楚你在哪里遇到了这个问题。 s 只是 str 中单个字符的列表。空间消耗为len(s)。
nums 是一个常数大小,由 O(N) 项控制。
这段代码是你写的,还是交给你的?编程风格非常不是“Pythonic”。
至于你的代码,从这个折叠开始:
count = 0
for char in str:
val = ord[char] + 1
if abs(val) == 1:
count += 1
print count
return count == 0
首先,我替换了你的单字母变量 (s => char; i => val ).然后,我删除了大部分 中间步骤,留下几个帮助您阅读代码。最后,我用了一个直截了当的 bool 值来返回,而不是原来的那种绕口令。
我没有使用 Python 的计数方法——那会进一步缩短函数。顺便说一句,您有打印统一值的计数,还是只需要返回 bool 值?如果它只是返回值,您可以使其更短。
关于python - 列表创建的空间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459701/