Reverse Words in a String | LeetCode OJ | C++

时间:2023-03-09 13:22:57
Reverse Words in a String  |  LeetCode OJ  | C++

我的思路:先读取每一个单词,存放到容器中;读取完毕后,将容器中的单词倒序写入输出中。

#include<iostream>
#include<string>
#include<vector>
using namespace std;
void f(string &s){
vector<string> vs;
string temp="";
int i=;
while(s[i]!='\0'){ //遍历直到结尾
if (s[i]==' '){ //遇到空格
if (!temp.empty())
vs.push_back(temp); //单词放入容器中
++i; // 跳过空格
temp=""; }
else{
temp.push_back(s[i]); //将字母加到temp字符串后面
++i;
}
}
if (!temp.empty())
vs.push_back(temp); //将最后一个单词放入容器中 int len=vs.size(); //倒序遍历容器
string res="";
for(int j=;j<len;++j){
res.append(vs[len-j-]);
if(j!=len-)
res.push_back(' ');
}
s=res;
} int main(){
string s;
getline(cin,s);
f(s);
cout<<s<<endl;
}

以上只是一种实现方法,还应该有更加高效的方法,欢迎讨论。