344. 反转字符串

描述

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

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

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

解题思路

这道题和之前写过的翻转数组的题目类似,双指针遍历到前后两个指针相会即可完成原地翻转。

代码如下:

class Solution {
    public void reverseString(char[] s) {
    char temp;
    for (int i = 0; i < s.length; i++) {
        if (i<(s.length-1-i)){
            temp = s[i];
            s[i] = s[s.length-1-i];
            s[s.length-1-i] = temp;
        }else {
            break;
        }
    }
    }
}

运行结果:

10:29    info
                        解答成功:
                        执行耗时:1 ms,击败了100.00% 的Java用户
                        内存消耗:45.2 MB,击败了35.74% 的Java用户

题解

双指针

class Solution {
    public void reverseString(char[] s) {
        int n = s.length;
        for (int left = 0, right = n - 1; left < right; ++left, --right) {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
        }
    }
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-string/solution/fan-zhuan-zi-fu-chuan-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

小结

简单题目

添加新评论