题解 | #翻转单词序列#

翻转单词序列

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

整体的思路是从后向前翻转,遇到空格,将空格后面的字符串放入新创建的字符串中,再重新定义长度,这样便去掉了已经反转的字符,但是由于最开始的字符并不是空格,这样的循环建立不了,便在开头添加一个空格,直到循环到第一个字符。

class Solution {
public:
    string ReverseSentence(string str) {
        int len1=str.length();
        if(len1==0 ||len1==1)
            return str;
         string scur={};//创建空字符串,用于接收翻转的字符串
        str=' '+str.substr(0);//在原始字符串开始位置加个字符!!!!重点,与下面的循环有关,遇到空格才加
      int  len=len1+1;//此时长度加长了1
        //从后向前翻转,直到第一个数
     while(len>=0)
        {
           if(str[len]!=' ') 
           {
                len--;
           }
           else if(str[len]==' ')
           {
                scur=scur+str.substr(len+1)+' ';//从空格后一个位置加到末尾,再加上一个空格
               str.resize(len);//从空格开始,去除尾部刚刚加过的字符,重新定义大小,这样只剩下没有翻转的字符串了
               len=str.length();
               len--;
           }
        }
      scur.resize(len1);//此时末尾会多一个空格,因为str的本身长度为len1,将最后一个空格删掉
           return scur; 
    }
};
全部评论

相关推荐

勤劳的鲸鱼在okr拆解:没有别的选择就去吧,有实习和没实习找工作是天上地下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务