leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
2165.cpp (802B)
0 class Solution {
1 public:
2 long long smallestNumber(long long num) {
3 static uint8_t digits[16];
4 bool neg = false;
5 uint8_t cnt = 0;
7 if (num < 0) {
8 num = -num;
9 neg = true;
10 }
12 do {
13 digits[cnt++] = num % 10;
14 } while ((num /= 10) > 0);
16 if (neg)
17 sort(begin(digits), begin(digits) + cnt, greater());
18 else {
19 sort(begin(digits), begin(digits) + cnt);
20 for (int i = 0; i < cnt; i++) {
21 if (digits[i] == 0) continue;
22 swap(digits[0], digits[i]);
23 break;
24 }
25 }
27 num = 0;
28 for (int i = 0; i < cnt; i++)
29 num = (num * 10) + digits[i];
30 return !neg ? num : -num;
31 }
32 };