タイトル:正の整数配列を入力アレイは一緒に番号を並んですべての数字をステッチ、すべての数が最小のものにスプライシングさすることができるプリントアウト。3,32,321入力アレイは} {例えば、3つの数の最小数は321323に配置することができる印刷します。
アイデア:
照合を書くには、二つの図は、文字列に変換され、次に文字列の異なるソート順を比較した後、小さい方の出力。
最後に、良好な出力をスプライスするために、ソートされた配列。
class Solution{
public:
string PrintMinNumber(vector<int> numbers){
string ans;
if (numbers.empty()) return ans;
sort(numbers.begin(), numbers.end(), cmp);
for (int i = 0; i < numbers.size(); ++i)
{
ans += to_string(numbers[i]);
}
return ans;
}
static bool cmp(int a, int b)
{
string str1 = to_string(a);
string str2 = to_string(b);
return (str1 + str2) < (str2 + str1);
}
};
Pythonのソリューション:
ここlstrip()メソッドを使用したり、指定した文字列切り捨てスペースが残されています。
# -*- coding:utf-8 -*-
from functools import cmp_to_key
class Solution:
def cmp(self, a, b):
if a + b > b + a:
return 1
if a + b < b + a:
return -1
else:
return 0
def PrintMinNumber(self, numbers):
# write code here
if len(numbers) == 0:
return ""
numstr = list(map(str, numbers))
numstr.sort(key=cmp_to_key(self.cmp))
return"".join(number).lstrip('0')