CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
jackfrued

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: jackfrued/Python-100-Days
Path: blob/master/Day01-15/code/Day12/str2.py
Views: 729
1
"""
2
字符串常用操作 - 实现字符串倒转的方法
3
4
Version: 0.1
5
Author: 骆昊
6
Date: 2018-03-19
7
"""
8
9
from io import StringIO
10
11
12
def reverse_str1(str):
13
return str[::-1]
14
15
16
def reverse_str2(str):
17
if len(str) <= 1:
18
return str
19
return reverse_str2(str[1:]) + str[0:1]
20
21
22
def reverse_str3(str):
23
# StringIO对象是Python中的可变字符串
24
# 不应该使用不变字符串做字符串连接操作 因为会产生很多无用字符串对象
25
rstr = StringIO()
26
str_len = len(str)
27
for index in range(str_len - 1, -1, -1):
28
rstr.write(str[index])
29
return rstr.getvalue()
30
31
32
def reverse_str4(str):
33
return ''.join(str[index] for index in range(len(str) - 1, -1, -1))
34
35
36
def reverse_str5(str):
37
# 将字符串处理成列表
38
str_list = list(str)
39
str_len = len(str)
40
# 使用zip函数将两个序列合并成一个产生元组的迭代器
41
# 每次正好可以取到一前一后两个下标来实现元素的交换
42
for i, j in zip(range(str_len // 2), range(str_len - 1, str_len // 2, -1)):
43
str_list[i], str_list[j] = str_list[j], str_list[i]
44
# 将列表元素连接成字符串
45
return ''.join(str_list)
46
47
48
if __name__ == '__main__':
49
str = 'I love Python'
50
print(reverse_str1(str))
51
print(str)
52
print(reverse_str2(str))
53
print(str)
54
print(reverse_str3(str))
55
print(str)
56
print(reverse_str4(str))
57
print(str)
58
print(reverse_str5(str))
59
print(str)
60
61