zoukankan      html  css  js  c++  java
  • 引用参数(翻转单词顺序列)

    错误代码:

    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进行改变。

  • 相关阅读:
    zlib压缩一个文件为gzip格式
    最短路径算法Dijkstra
    用MonoDevelop开发Linux游戏
    Flask入门1HelloWorld
    Windows+Linux打造和谐的开发环境
    WinCE 6.0下的编译选项
    使用cvrtbin.exe转换bin文件到nb0
    美的电磁炉(SK2106)加热断断续续问题的快速修复(原创)
    解决XP下双网卡不能同时用
    USB驱动程序打包(转)
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6674288.html
Copyright © 2011-2022 走看看