ブラシタイトルが提供勝:
件名の説明:
正の整数の配列を入力して、一緒にスプライスされた番号に配置された全ての数字の配列は、スプライスは最小のすべての番号を印刷することができます。3,32,321入力アレイは} {例えば、3つの数の最小数は321323に配置することができる印刷します。
アイデア:
なぜなら、比較のために文字列を一緒にニーズの最初の文字列に番号と比べ、。比較が完了した後、順次出力します。
- もしAB> BA、その後bより、その
- AB <BAのAがBよりも小さい場合、
- Aは、AB = BA Bに等しい場合。
知識は加えました:
ソート()関数:
ヘッダーファイル:書式#include <アルゴリズム>
関数のプロトタイプ:ソート(first_pointer、N-first_pointer +、CMP)
パラメータの説明:
- first_poniter:最初のアドレスアレイ
- first_pointer + N:代表最後のアドレス
- CMP:ソート機能、デフォルト比較モードを呼び出す埋めることができない、デフォルトでは、個々のニーズの変化に応じてというように降順、昇順です。
トピック出典:
C ++:
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
if(!numbers.size())
return "";
sort(numbers.begin(), numbers.end(), cmp);
string res;
for(int i=0;i<numbers.size();i++)
res+=to_string(numbers[i]);
return res;
}
private:
static bool cmp(int a,int b){
string A=to_string(a)+to_string(b);
string B=to_string(b)+to_string(a);
return A < B;
}
};
パイソン:
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if(len(numbers)==0)
return ''
compare=lambda a,b:cmp(str(a)+str(b),str(b)+str(a))
min_string=sort(numbers,cmp=compare)
return ''.join(str(s) for s in min_string)