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