整列配列の最小数(22)

タイトル

[正の整数配列を入力し、一緒にステッチアレイは、すべての番号を並ん数字は、すべての番号が最小のものにスプライシングさすることができるプリントアウト。3,32,321入力アレイは} {例えば、3桁の最小数は321323として配置することができる印刷]


1、分析

  • スプライシング中に、数字最大整数スプライシング2 int型は、数値オーバーフローを生じる、INTデジタルで表現できる範囲を超えてもよいことに留意されたいです。したがってディジタル・データは、便利で安全なような問題を解決することができる範囲外であるように、文字列に変換することができます。
  • そして、デジタル数bは、場合一緒にスプライス AB <BA それはどのように新しいルール、数B未満の数を定義します。

図2に示すように、コード

class Solution {
public:
    string PrintMinNumber(vector<int> numbers) {
        int len=numbers.size();
        if(len<=0)
            return res;
        // 按照指定的规则来进行排序
        sort(numbers.begin(),numbers.end(),cmp);
        for(auto &i:numbers)
        {
            res+=to_string(i);
        }
        return res;
    }
    // 指定排序的规则
   static bool cmp(int num1,int num2)
    {
        string str1=to_string(num1)+to_string(num2);
        string str2=to_string(num2)+to_string(num1);
        return str1<str2;
    }
private:
    string res;
};
公開された213元の記事 ウォン称賛48 ビュー110 000 +

おすすめ

転載: blog.csdn.net/Jeffxu_lib/article/details/104737640