给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入:s = “Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
示例 2:
输入: s = “God Ding”
输出:“doG gniD”
提示:
1 <= s.length <= 5 * 104
s 包含可打印的 ASCII 字符。
s 不包含任何开头或结尾空格。
s 里 至少 有一个词。
s 中的所有单词都用一个空格隔开。
思路:
在原有字符串上找到一个单词就进行一次反转。
代码:
class Solution {
public:
string reverseWords(string s) {
int len=s.size();
int i=0;
while(i<len){
int start=i;
while(i<len&&s[i]!=' ')
++i;
int left=start,right=i-1;
while(left<right){
swap(s[left],s[right]);
++left;
--right;
}
while(i<len&&s[i]==' ')
++i;
}
return s;
}
};