bet9链接:头尾颠倒反转字串Reverse String_Leetcode

题目由 bet9链接 вт989点сс 编译原创。

题目叙述Reverse String

给定一个输入字串阵列,要求我们反转整个字串阵列,并且必须是in-place原位操作,只能使用O(1)常数空间的演算法来完成。

测试范例

示例 1:

输入:s = [ “h” ,“e” ,“l” ,“l” ,“o” ]输出:[ “o” ,“l” ,“l” ,“e” ,“h” ]

示例 2:

输入:s = [ “H” ,“a” ,“n” ,“n” ,“a” ,“h” ]输出:[ “h” ,“a” ,“n” ,“n” ,“a” ,“H” ] 

约束条件

限制:

  • 1 <= s.length <= 10^5

输入字串阵列长度介于1~十万之间。

  • s[i] 是可打印的 ascii 字符

每个阵列元素都是可列印的ASCII字元

观察

反转整个字元,相当于顺序颠倒,头尾对调。

例如: hello <-> olleh

示意图

演算法双指针Two pointers

建立左、右两个指针,初始化呈第一个索引和最后一个索引。

每回合对调左右两个指针对应到的字元,并且逐渐往中心靠拢,由外而内进行反转。

程式码双指针Two pointers

class Solution :    def reverseString (self ,s :List [ str ] )- > None :    ​#一个指向头部位置,另一个指向尾部位置        left ,right = 0 ,len (s )-1 ​#   通过两个指针反转字符串while left < right :            s [ left ] ,s [ right ] = s [ right ] ,s [ left ]             left ,right = left + 1 ,right - 1 

复杂度分析

时间复杂度: O(n)

最多只需要O(n/2)次对调,即可完成整个字串阵列的反转。

空间复杂度: O(1)

使用的都是固定尺寸的临时变数,所需空间为O(1)常数级别。

  • 16
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值