Skip to content

[LeetCode] 344. Reverse String #344

Open
@grandyang

Description

@grandyang

 

Write a function that reverses a string. The input string is given as an array of characters char[].

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

You may assume all the characters consist of printable ascii characters.

 

Example 1:

Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Example 2:

Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

 

这道题没什么难度,直接从两头往中间走,同时交换两边的字符即可,参见代码如下:

 

解法一:

class Solution {
public:
    void reverseString(vector<char>& s) {
        int left = 0, right = (int)s.size() - 1;
        while (left < right) {
            char t = s[left];
            s[left++] = s[right];
            s[right--] = t;
        }
    }
};

 

我们也可以用 swap 函数来帮助我们翻转:

 

解法二:

class Solution {
public:
    void reverseString(vector<char>& s) {
        int left = 0, right = (int)s.size() - 1;
        while (left < right) {
            swap(s[left++], s[right--]);
        }
    }
};

 

Github 同步地址:

#344

 

类似题目:

Reverse Words in a String II

Reverse Words in a String

Reverse Vowels of a String 

Reverse String II

 

参考资料:

https://leetcode.com/problems/reverse-string/

https://leetcode.com/problems/reverse-string/discuss/80935/Simple-C%2B%2B-solution

https://leetcode.com/problems/reverse-string/discuss/80937/JAVA-Simple-and-Clean-with-Explanations-6-Solutions

 

LeetCode All in One 题目讲解汇总(持续更新中...)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions