【题目】
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
来源:leetcode
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/
【示例】
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
【知识点】
1、algorithm头文件下的reverse()函数可以用于对数组、字符串、容器等内容进行翻转操作。
2、istringstream()函数的使用
【代码】
class Solution {
public:
string reverseWords(string s) {
string rs="";
int pos=s.find(" ");
int pre=0;
while(pos>=0&&pos<=1000000){
string temp=s.substr(0,pos);
reverse(temp.begin(),temp.end());
rs+=temp+" ";
s=s.substr(pos+1);
pos=s.find(" ");
}
reverse(s.begin(),s.end());
rs+=s;
return rs;
}
};
【解法二】
利用#include头文件下的函数istringstream(),istringstream对象可以绑定一行字符串,然后以空格为分隔符把该该字符串分隔开来。
#include<iostream>
#include<sstream>
using namespace std;
int main(){
string str,line;
while(getline(cin,line)){
istringstream stream(line);
while(stream>>str)
cout<<str<<endl;
}
return 0;
}
相信你从上面的例子中已经学会了如何使用istringstream(),下面我们用这个函数来解决此题吧!
class Solution {
public:
string reverseWords(string s) {
string rs="",str="";
istringstream stream(s);
while(stream>>str){
reverse(str.begin(),str.end());
rs+=str+" ";
}
rs=rs.substr(0,rs.size()-1);
return rs;
}
};