题解 | #翻转单词序列#

翻转单词序列

http://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3

思路:
  1. 为了省去边界条件的判断,在原字符串的尾部添加空格符,这样在遍历到尾部的时候,仍然存在一个空格,最后的结果去除掉这个空格即是所求答案。
  2. 首先判断这个字符串是不是一个空串或单字符的串,如果是,则翻转后还是他本身,故return str。
  3. 接着开始遍历非以上两种情况下的字符串,声明两个变量i和j,i用来定位下一个空格,j用来定位当前空格的下一个字符的位置;
  4. 找空格符,如果找到就将j与i之间的字符插入到res的前部,substr(i,num)的意思是从位置i,插入位置后续的num个元素,这里n的个数即等于j-i,执行完毕之后,将j指向i+1的位置。执行++i,继续遍历。
  5. 返回res.substr(0,sz),因为要去除掉末尾多出来的空格符。

class Solution {
public:
    string ReverseSentence(string str) {
        string strb=str+' ';
        string res="";
        int i=0;
        int j=0;
        int sz=strb.size()-1;

        if(str.size()==1||str==""){
            return str;
        }
        while(i<=sz){ 
            if(strb[i]==' '){
                   int num=i-j;
                   res=strb.substr(j,num)+' '+res;
                   j=i+1;
            }
            i++;
        }
        return res.substr(0,sz);
  }
};
全部评论

相关推荐

牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
09-29 17:44
已编辑
蔚来_测(准入职员工)
//鲨鱼辣椒:见不了了我实习了四个月上周再投筛选了一天就给我挂了
点赞 评论 收藏
分享
请看图片
投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务