leetcode题目--Reverse Words in a String解答

//题目内容

//Given an input string, reverse the string word by word.

//For example,
//Given s = "the sky is blue",
//return "blue is sky the".

//思路解析:

//1)边界处理及空值处理。

//2)中间插入多个空格处理。

class Solution {
public:
    void reverseWords(string &s) {
         vector<string> vec;  
        int len=(int)s.length();
        if(len==0)
            return;
        int i=0;
        int j=len-1;
        while(i!=len&&s[i]==' ')
            i++;  
        while(j!=-1&&s[j]==' ')
            j--;  
        int k=i;  
        while(i<=j){  
            k=i;
            while(s[i]!=' '&&i<=j)
                i++;
            vec.push_back(s.substr(k,i-k));
            while(s[i]==' '&&i<=j)
                i++;
        }
        if(vec.size()==0)
        {
            s = "";
            return;
        }
        reverse(vec.begin(),vec.begin()+vec.size());  
        string m=vec[0];  
        for(int i=1;i<vec.size();i++){  
            m+=" ";  
            m+=vec[i];  
        }  
        s=m;  
    }  
};


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值