码迷,mamicode.com
首页 > 其他好文 > 详细

引用参数(翻转单词顺序列)

时间:2017-04-06 16:56:43      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:翻转   序列   参数   不能   ==   string   har   solution   log   

错误代码:

class Solution {
public:
    string ReverseSentence(string str) {
        int length = str.size();
        if(length <= 0)
            return str;
        reverse(str,0,length-1);
        std::queue<int> blank;
        for(int i = 0;i < length;i++){
            if(str[i] ==  )
                blank.push(i);
        }
        int begin = 0;
        //int end = blank.front();
        //blank.pop();
        while(!blank.empty()){
            int end = blank.front();
            blank.pop();
            reverse(str,begin,end-1);
            begin = end+1;
            //end = blank.front();
            //blank.pop();
        }
        reverse(str,begin,length-1);
        return str; 
    }
private:
    void reverse(string str,int begin,int end){
        while(begin < end){
            char tmp = str[begin];
            str[begin] = str[end];
            str[end] = tmp;
            begin++;
            end--;
        }
    }
};

正确代码:

class Solution {
public:
    string ReverseSentence(string str) {
        int length = str.size();
        if(length <= 0)
            return str;
        reverse(str,0,length-1);
        std::queue<int> blank;
        for(int i = 0;i < length;i++){
            if(str[i] ==  )
                blank.push(i);
        }
        int begin = 0;
        //int end = blank.front();
        //blank.pop();
        while(!blank.empty()){
            int end = blank.front();
            blank.pop();
            reverse(str,begin,end-1);
            begin = end+1;
            //end = blank.front();
            //blank.pop();
        }
        reverse(str,begin,length-1);
        return str; 
    }
private:
    void reverse(string &str,int begin,int end){
        while(begin < end){
            char tmp = str[begin];
            str[begin] = str[end];
            str[end] = tmp;
            begin++;
            end--;
        }
    }
};

正确代码只是比错误代码在reverse函数中增加了一个参数引用

错误代码使用的reverse函数并不能改变str这个实参,导致后面的翻转出错。增加参数引用后就能对参数str进行改变。

引用参数(翻转单词顺序列)

标签:翻转   序列   参数   不能   ==   string   har   solution   log   

原文地址:http://www.cnblogs.com/ymjyqsx/p/6674288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!