zoukankan      html  css  js  c++  java
  • 剑指offer——47把数组排成最小的数

    题目描述

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
     
    题解:
      这与PAT中最小排列组合是同理的,为了防止新组成的数字溢出,全部转化为字符串操作。
      
     1 class Solution {
     2 public:
     3     string PrintMinNumber(vector<int> numbers) {
     4         if (numbers.size() == 0)return "";
     5         vector<string>v;
     6         for (auto a : numbers)
     7             v.push_back(to_string(a));
     8         sort(v.begin(), v.end(), [](string a, string b) {return a + b < b + a; });
     9         string res = "";
    10         for (auto s : v)
    11             res += s;
    12         while (res.size() > 0 && res[0] == '0')
    13             res.erase(0, 1);
    14         return res;
    15     }
    16 };
  • 相关阅读:
    占卜DIY
    飞行员兄弟
    给树染色
    国王游戏
    雷达设备
    畜栏预定
    防晒
    去雨系列论文笔记
    First day
    如何用fprintf写十六进制 并控制格式
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11695371.html
Copyright © 2011-2022 走看看