文章目录
涉及复杂度用c语言编,没有要求的用python编。
翻转字符串
"""
aim:翻转字符串,如'abcde'翻转为edcba
要求:语言:c(python如果调用底层,未知,可先不考虑复杂度)
空间复杂度为o(1)
请写出思路
求其时空复杂度
"""
# python方法一
strs = 'abcde'
aim = []
for i in reversed(strs):
aim.append(i)
print(''.join(aim))
# python方法二
strs = 'abcde'
strList = strs.split() # 将输入的字符串用空格分隔为列表
resList = strList[::-1] # 将列表反转
print("".join(resList)) # 打印结果
# c方法三
"""
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
时间复杂度:公式:T(n) = O(f(n)),其中f(n)表示每行代码执行次数之和,而O表示正比例关系
O(1): 无论代码执行了多少行,只要是没有循环等复杂结构,那这个代码的时间复杂度就都是O(1)
线性阶O(n):
for i in range(n): # O(n)
print('Hello world')
平方阶O(n²):
for i in range(n): # O(n^2)
for j in range(n):
print('Hello world')
空间复杂度:算法在运行过程中临时占用的存储空间大小,即程序中变量的个数,同样反映的是一个趋势
O(1)-如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量
O(n)-列表的空间复杂度为列表的长度
# 空间复杂度为1
a = 'Python'
b = 'PHP'
c = 'Java'
# 空间复杂度为5
num = [1, 2, 3, 4, 5]
"""