劍指offer【c++】把數組排成最小的數

劍指offer【c++】把數組排成最小的數

題目: 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。

思路: 類似於冒泡排序,比較string (a+b)  和 string(b+a)誰比較小,比較大的排到後面

class Solution {
public:
    static bool cmp(int a, int b)
    {
        string A = "";
        string B = "";
        A += to_string(a);
        A += to_string(b);
        
        B += to_string(b);
        B += to_string(a);
        
        return A<B;
        
    }
    
    
    string PrintMinNumber(vector<int> numbers) {
        string ans = "";
        sort(numbers.begin(),numbers.end(),cmp);
        for(int i=0; i<numbers.size(); i++)
            ans += to_string(numbers[i]);
        return ans;
        
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章