• 一道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;
    }
    };

  • 相关阅读:
    安装MySQL-python时报错
    人的成功平台很重要
    开源运维工具
    遗忘Windows Server 2008R2密码的处理方法
    操作系统下载和操作系统更新失败解决
    说说对SQL 语句优化有哪些方法?
    Git彻底删除历史提交记录的方法
    MSSQL备份脚本
    .NET Core Data Access
    各种数据库默认端口总结
  • 原文地址:https://www.cnblogs.com/fenglongyu/p/7625613.html
Copyright © 2020-2023  润新知