zoukankan      html  css  js  c++  java
  • 一道leetcode题的收获如何比较字符串的大小重写sort中的compare[](string &s,string &t){return s+t>t+s};

    KEY:一种很好的想法,写法也很好,使用for(auto i:num)遍历访问num

    lambda表达式重写比较compare参数,相当完美

    while处理[0,0,0]情况的输出。优雅的解决问题。perfect!

    class Solution {
    public:
    string largestNumber(vector<int> &num) {
    vector<string> arr;
    //类似python的容器遍历模式
    for(auto i:num)
    arr.push_back(to_string(i));
    //变成字符串压进arr中,C++11新增加的全局函数to_string()
    sort(begin(arr), end(arr), [](string &s1, string &s2){ return s1+s2>s2+s1; });
    //compare参数实现,匿名函数lambda,这种比较方法的可行性ASCII码的比较,0对应dec的48 in ASCII中美国标准信息交换代码ANSI制定
    string res;
    for(auto s:arr)
    res+=s;
    while(res[0]=='0' && res.length()>1)
    res.erase(0,1);
    /*erase函数的原型如下:
    (1)string& erase ( size_t pos = 0, size_t n = npos );
    (2)iterator erase ( iterator position );
    (3)iterator erase ( iterator first, iterator last );
    也就是说有三种用法:
    (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
    (2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
    (3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
    */
    return res;
    }
    };

  • 相关阅读:
    qt用mingw编译时报错 multiple definition of
    作用域详解
    webpack-dev-server
    前端致命错误汇总
    那些我不知道的基础知识
    常见英语词汇第一记
    CSS权重;慎用!important
    校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)
    同源策略
    用CSS实现梯形图标
  • 原文地址:https://www.cnblogs.com/fenglongyu/p/7625613.html
Copyright © 2011-2022 走看看