LeetCode 344.反转字符串

问题描述

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

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题

问题链接

思路

使用双指针法,left指向s[0],right指向s[s.length - 1];两指针相向遍历数组,每次交换两位置的字符,直到两指针相遇

code

java 复制代码
class Solution {
    public void reverseString(char[] s) {
        int left = 0;
        int right = s.length - 1;
        //当left与right不相等时,交换left和right处的字符
        while(left <= right){
            char temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
    }
}
java 复制代码
class Solution {

    public void reverseString2(char[] s) {
        int left = 0;
        int right = s.length - 1;
        while (left < right){
            s[left] ^= s[right]; //构造 a ^ b 的结果,并放在 a 中
            s[right] ^= s[left]; //将 a ^ b 这一结果再 ^ b ,存入b中,此时 b = a, a = a ^ b
            s[left] ^= s[right];  //a ^ b 的结果再 ^ a ,存入 a 中,此时 b = a, a = b 完成交换
            left++;
            right--;
        }
    }
}
相关推荐
穿条秋裤到处跑8 小时前
每日一道leetcode(2026.04.29):二维网格图中探测环
算法·leetcode·职场和发展
水蓝烟雨14 小时前
1931. 用三种不同颜色为网格涂色
算法·leetcode
leoufung16 小时前
LeetCode 76:Minimum Window Substring 题解与滑动窗口思维详解
算法·leetcode·职场和发展
风筝在晴天搁浅17 小时前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表
开开心心就好20 小时前
近200个工具的电脑故障修复合集
安全·智能手机·pdf·电脑·consul·memcache·1024程序员节
普贤莲花21 小时前
【2026年第18周---写于20260501】---舍得
程序人生·算法·leetcode
m0_6294947321 小时前
LeetCode 热题 100-----16.除了自身以外数组的乘积
数据结构·算法·leetcode
We་ct1 天前
LeetCode 97. 交错字符串:动态规划详解
前端·算法·leetcode·typescript·动态规划
无敌昊哥战神1 天前
【LeetCode 37】解数独 (Sudoku Solver) —— 回溯法详解 (Python/C/C++)
c语言·c++·python·算法·leetcode
风筝在晴天搁浅1 天前
LeetCode 162.寻找峰值
算法·leetcode