344. 反转字符串

leecode原题

题目

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 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 <= 105
  • s[i] 都是 ASCII 码表中的可打印字符

解题思路

思路

这个题要实现O(1)的算法空间度,重点就是可以结合我们之前在链表部分使用过的双指针方法:

  1. 初始定义i:=0;j=len(s)-1
  2. 判断是否i< j, 是的话,则执行步骤3,4, 否的话终止。
  3. 交换i, j对应的数组的值
  4. i++, j--
  5. 重复2, 3, 4这个过程

实现

源码

func reverseString(s []byte) {
    i := 0
    j := len(s) - 1
    for i < j {
        s[i], s[j] = s[j], s[i]
        i++
        j--
    }
    return
}
Copyright © ROSEMARY666 2022 all right reserved,powered by Gitbook该文章修订时间: 2022-09-28 15:55:21

results matching ""

    No results matching ""