【简单】557. 反转字符串中的单词 III

643 篇文章 5 订阅

【题目】
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
来源: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;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值