leetcode 反转字符串中的单词

题目:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
题解:
这个题就是输入一个带空格的字符串(题目已经帮我们输入了),利用stringsteam我们可以先把这个字符串中的空格给删除,然后对这个字符串中的每个单词进行反转处理,最后把每个单词组合起来,中间加上必要的单个空格,最后再删除一个多余的空格就行。(注意上面的黑体加粗)

class Solution {
public:
    string reverseWords(string str) {
        // 定义用于返回的字符串
         string str_for_return = "";
       
        //把字符串放入字符串流中
        stringstream ss(str);
        string temp = "";
        while(ss>>temp)
        {
         //利用算法头文件的反转函数对每个单词进行反转
        reverse(temp.begin(),temp.end());
        //利用一个空字符串把这些反转后的给组合起来
         str_for_return +=(temp+" ");
            
          
    }
    //最终字符串会多带一个空格,利用erase函数删除就行,也可以用substring();
        str_for_return.erase( str_for_return.end()-1);
    return str_for_return; 
    }
    
};

题目已经给了字符串,但是为了以后大家写题方便,在这里给大家提供输入带空格字符串的方法

string str = "";

 getline(cin,str);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值