最近了解到python面试中经常出现的一道面试题,给定一个字符串,用多种方法实现字符串的翻转,例如:
输入:abcdefg
输出:gfedcba
下边将给出6种解法,解决此类问题:
1,直接翻转,使用python自带的字符串处理方法
string = 'abcdefg'
string[::-1]
2, 转换为列表,使用列表翻转,然后再拼接为字符串
lists = list(string)
lists.reverse()
''.join(lists)
3 ,转换为列表,遍历列表并交换首尾
l = list(string)
for i in range(len(l) // 2):
l[i], l[-(i+1)] = l[-(i+1)], l[i]
''.join(l)
4, 转换为列表,从末位使用pop方法取数据并拼接到字符串中
l = list(string)
rs = ''
while l:
rs += l.pop()
print(rs)
5, 转换为列表,从末尾取数据进行拼接,原理同上
''.join([string[i-1] for i in range(len(string), 0, -1)])
6,使用递归算法,直接将字符串末尾字母取出来,再进行递归拼接
def rev_str(s):
head, *tail = s
return ''.join(rev_str(tail)) + head if tail else head
rev_str(string)
如有更好的解法,请再评论区交流