题目:比如给定一串字符串,翻转字符串。
方法1:将字符串前后字符交换,如果是奇数len,则最中间的字符不变。
时间复杂度为:O(N)
import sys
if len(sys.argv) != 2:
print("Usage: python3 %s <target string>" % sys.argv[0])
sys.exit()
s = sys.argv[1]
slist = list(s) # 将字符串转为列表。因为列表可变,字符串不可变。
times = len(s) // 2 # 字符串前后换位的次数。
for i in range(times):
tmp = slist[i] # 将前面的字符储存在tmp中。
site = -(i+1) # 欲交换的后面字符的位置。
slist[i] = slist[site] # 将后面的字符换到前面来。
slist[site] = tmp # 前面的字符换到后面来。
s_reverse = ''.join(slist) # 将列表转化为字符串。
print("Reverse string is: ", s_reverse)
方法2:链表,将原链表的指向弄反,即原第2个值的指针指向第1个值,原第3个值指向第2个值,即可将列表反转。
import sys
class linkNode:
def __init__(self, data, p=0): # 链表节点初始化,一个数据域+指针域。数据域是初始化时入参决定的,指针域默认为空。
self.dat