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; 6 7 if (num < 0) { 8 num = -num; 9 neg = true; 10 } 11 12 do { 13 digits[cnt++] = num % 10; 14 } while ((num /= 10) > 0); 15 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 } 26 27 num = 0; 28 for (int i = 0; i < cnt; i++) 29 num = (num * 10) + digits[i]; 30 return !neg ? num : -num; 31 } 32 };