跳转至

557.反转字符串中的字符 III (Easy)*

题目描述*

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例*

输入: "Let's take LeetCode contest"

输出: "s'teL ekat edoCteeL tsetnoc"

注意*

在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

代码*

字符串流或原地交换。

class Solution {
public:
    string reverseWords(string s) {
        stringstream ss(s);
        string tmp;
        string res = "";
        while(ss >> tmp) {
            reverse(tmp.begin(), tmp.end());
            res += tmp + " ";
        }
        return res.substr(0, res.length() - 1);
    }
};
class Solution {
public:
    string reverseWords(string s) {
        int len = s.length();
        if(len == 0) {
            return "";
        }
        int l = 0, r = 0;

        while(r < len) {
            while(r < len && s[r] != ' ') {
                r++;
            }
            reverse(s, l, r - 1);
            l = r + 1;
            r = l;
        }
        return s;
    }
    void reverse(string& s, int l, int r) {
        while(l < r) {
            char tmp = s[l];
            s[l] = s[r];
            s[r] = tmp;
            l++, r--;
        }
    }
};

最后更新: July 23, 2022