ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python编程题41--原地反转字符串

2022-01-08 11:34:32  阅读:129  来源: 互联网

标签:right Python 反转 元素 列表 -- 41 实现 left


题目

针对一个字符串,该字符串是以字符列表的形式存在,请编写一个函数,实现将字符串反转过来。

例如:

给定一个字符列表:["h", "e", "l", "l", "o"],返回结果:["o", "l", "l", "e", "h"]

给定一个字符列表:["h", "a", "n", "n", "a", "H"],返回结果:["H", "a", "n", "n", "a", "h"]

说明

  • 不允许使用其他的列表,只能在原列表上处理
  • 不允许使用编程语言的内置函数实现反转,也不允许对列表进行切片操作

实现思路1

  • 使用 双指针 来实现
  • 定义两个指针:left 和 right,left 从列表第一个位置向中间移动,right 从列表最后一个位置向中间移动
  • left 和 right 移动过程中,每次都交换对应的元素,当 left 大于或等于 right 时,停止移动,此时即完成对列表元素的反转

代码实现1

def reverseString(s):
    left, right = 0, len(s) - 1
    while left < right:
        s[left], s[right] = s[right], s[left]
        left += 1
        right -= 1

实现思路2

  • 使用 位运算 来实现
  • 针对列表 s,我们要实现原地反转,只需要让前一半元素与后一半元素进行交换即可,如果当前元素下标是 i,那么需交换元素的下标即为 - i - 1
  • ~ 按位取反运算中:~i = - i - 1,所以我们直接让 s[i] 与 s[~i] 交换就行

代码实现2

def reverseString(s):
    for i in range(len(s) // 2):
        s[i], s[~i] = s[~i], s[i]

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

标签:right,Python,反转,元素,列表,--,41,实现,left
来源: https://www.cnblogs.com/wintest/p/15777784.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有