2165. Smallest Value of the Rearranged Number

ss
Feb 6, 2022

--

周賽複盤

這題主要還是要先切回string

然後我們依據 如果是正數就從小排到大

如果是負數就從大排到小(加上負號就會變最小)

來判斷

最後再切回long long即可

注意正數有可能會有leading zero, 所以就把zero跟第一個不是0的值swap即可

class Solution {
public:
long long smallestNumber(long long num) {
if(num == 0) return 0;
string s = to_string(abs(num));
sort(s.begin(), s.end(), [&](int a, int b){
return num > 0?a<b:b<a;
});
int i = 0;
if(num > 0){
while(s[0] == '0'){
i++;
if(s[i] != '0'){
swap(s[i], s[0]);
}
}
}
return stoll(s) * (num < 0?-1:1);
}
};

時間複雜度 O(n log n ), sort

--

--

ss
ss

No responses yet