双指针:
-
用 i 遍历字符串,遇到字母空格后的字母即为单词首字母。
-
然后,用 j = i 开始往后遍历,找到下一个空格或者走到字符串末尾停止。
-
此时,如果 j 不是字符串结尾,则i 和 j 之间就是单词,用 k 遍历 i 到 j - 1,得到单词。如果 j 指向 是字符串末尾,则 s[j] 也是单词一部分,加入。
-
将得到的字符串加在结果前面。如果 j 不是字符串末尾,说明后面还有单词,则结果前面再加个空格。
-
输出结果。
class Solution {
public:
string reverseWords(string s) {
string res;
for(int i = 0; i < s.size(); i++)
{
while(s[i] == ' ') i++;//找到单词首字母
int j = i;
while(j < s.size() && s[j] != ' ') j ++;//找到单词末尾
string temp;//保存单词
for(int k = i; k < j; k++) temp += s[k];
if(j == s.size() - 1) temp = s[j] + temp;//如果j是字符串末尾,则单词中加入s[j]。
if(j != s.size()) res = ' ' + temp + res;//如果不是字符串末尾,则结果中需要加入空格
else res = temp + res;//是字符串末尾,则不需要加入空格。
i = j ;//找下一个单词
}
return res;//返回结果
}
};
求个点赞~
沒有問題
有一种智商被碾压的无力感