python - python函数的时空复杂度
问题描述
你能帮我计算一下下面代码的空间和时间复杂度吗
def isPalindrome(string):
# Write your code here.
string1=string[::-1]
if string1==string:
return True
else :
return False
解决方案
该功能可以分解为其子过程的复杂性。在计算这个时间复杂度时,让 Python 术语中的字符数string
为n ( n = len(string
)。现在,让我们看一下 2 个子流程:
string
以相反的顺序遍历所有字符并分配给string1
(这是通过string1=string[::-1]
) - O(n)线性时间,因为 中有n 个字符string
。- 比较 if
string1 == string
- O(n)线性时间,因为每个字符串中的 n 个字符将相互比较,因此是n一对一比较。
因此,总时间复杂度为 O(n) + O(n),其中n为len(string)
。简而言之,我们将其简化为 O(n) 复杂度。
推荐阅读
- c++ - 将 Scheme 转换为 C++
- google-analytics - 我可以将 GA 事件从默认跟踪器路由到命名跟踪器吗?(或者让 Vimeo 使用我命名的跟踪器?)
- notifications - 通知 gnome 中节奏框内的上一个、暂停、下一个图标中的选项卡
- javascript - 创建一个启用和禁用网络摄像头的 GNOME shell 扩展
- c# - 如何调用通用动作
? - javascript - 尝试遍历所有连接的 socket.io 套接字以获取与套接字关联的用户名,但我遇到了一些麻烦
- python - 如何检查单选按钮是否被选中但输入框在tkinter中为空?
- java - 无法将 Thymeleaf 中的对象列表绑定到 Spring 控制器
- c# - 如何在控制台应用程序中发送 toastnotification
- events - 在我必须使用 querySelectorAll 选择按钮后,如何使每个按钮单击的功能起作用?