str2.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. """
  2. 字符串常用操作 - 实现字符串倒转的方法
  3. Version: 0.1
  4. Author: 骆昊
  5. Date: 2018-03-19
  6. """
  7. from io import StringIO
  8. def reverse_str1(str):
  9. return str[::-1]
  10. def reverse_str2(str):
  11. if len(str) <= 1:
  12. return str
  13. return reverse_str2(str[1:]) + str[0:1]
  14. def reverse_str3(str):
  15. # StringIO对象是Python中的可变字符串
  16. # 不应该使用不变字符串做字符串连接操作 因为会产生很多无用字符串对象
  17. rstr = StringIO()
  18. str_len = len(str)
  19. for index in range(str_len - 1, -1, -1):
  20. rstr.write(str[index])
  21. return rstr.getvalue()
  22. def reverse_str4(str):
  23. return ''.join(str[index] for index in range(len(str) - 1, -1, -1))
  24. def reverse_str5(str):
  25. # 将字符串处理成列表
  26. str_list = list(str)
  27. str_len = len(str)
  28. # 使用zip函数将两个序列合并成一个产生元组的迭代器
  29. # 每次正好可以取到一前一后两个下标来实现元素的交换
  30. for i, j in zip(range(str_len // 2), range(str_len - 1, str_len // 2, -1)):
  31. str_list[i], str_list[j] = str_list[j], str_list[i]
  32. # 将列表元素连接成字符串
  33. return ''.join(str_list)
  34. if __name__ == '__main__':
  35. str = 'I love Python'
  36. print(reverse_str1(str))
  37. print(str)
  38. print(reverse_str2(str))
  39. print(str)
  40. print(reverse_str3(str))
  41. print(str)
  42. print(reverse_str4(str))
  43. print(str)
  44. print(reverse_str5(str))
  45. print(str)
  46. # 提醒学生注意这是一个面试题: 写出你能想到的实现字符串倒转的代码