✨题目
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
✨示例
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
✨提示
- 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
✨解题
- 根据最近做题的思路来看,最容易想到的就是对每一个单词做翻转的操作,然后按照原来的顺序拼在一起。但是时间复杂度比较高,应该是过不了这个题的。
- 第二个思路就是,遍历一次字符串,然后找到每个单词第一个字母的位置,和其后面第一个空格的位置
class Solution {
public:
string reverseWords(string s) {
int len = s.length();
int i = 0;
string ans;
while(i < len){
int start = i;
while(i < len && s[i] != ' '){
i++;
}
for(int p = start;p < i;p++){
ans.push_back(s[start + i - 1 -p]);
}
while(i < len && s[i] == ' '){
i++;
ans.push_back(' ');
}
}
return ans;
}
};