diff options
author | Jack Sangdahl <[email protected]> | 2025-04-07 00:58:49 -0600 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-04-07 00:58:49 -0600 |
commit | 3893ea81d705aff59c158cfdafb33a04ee748627 (patch) | |
tree | 1030e9f6b8a506b85fcf36c2177b4e8ba76fe84e /max_diff_change_int.c | |
parent | beff35cecb8082a45325921e6f97179976808fe6 (diff) | |
download | leetcode-3893ea81d705aff59c158cfdafb33a04ee748627.tar.gz leetcode-3893ea81d705aff59c158cfdafb33a04ee748627.zip |
1432. max difference you can get from changing an integer
Diffstat (limited to 'max_diff_change_int.c')
-rw-r--r-- | max_diff_change_int.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/max_diff_change_int.c b/max_diff_change_int.c new file mode 100644 index 0000000..e272359 --- /dev/null +++ b/max_diff_change_int.c @@ -0,0 +1,44 @@ +// 1432. Max Difference You Can Get From Changing an Integer +#include "leetcode.h" + +/* + * you are given an integer 'num'. you will apply the following steps exactly + * two times: pick a digit 'x (0 <= x <= 9)', pick another digit 'y (0 <= y <= + * 9)'. the digit 'y' can be equal to 'x'. replace all occurences of 'x' in the + * decimal representation of 'num' by 'y'. the new integer cannot have any + * leading zeros. also the new integer cannot be 0. let 'a' and 'b' be the + * results of applying the operations to 'num' the first and second times + * respectively. return the max difference between 'a' and 'b'. + */ + +int maxDiff(int num) { + char order[10], x, y; + sprintf(order, "%d", num); + int i; + for (i = 0; order[i] && order[i] == '9'; i++) + ; + if (order[i]) { + x = order[i]; + for (; order[i]; i++) + if (order[i] == x) + order[i] = '9'; + } + int a = atoi(order); + sprintf(order, "%d", num); + for (i = 0; order[i] && (order[i] == '0' || order[i] == '1'); i++) + ; + if (order[i]) { + x = order[i]; + y = (order[0] != '1') + '0'; + for (; order[i]; i++) + if (order[i] == x) + order[i] = y; + } + int b = atoi(order); + return a - b; +} + +int main() { + printf("%d\n", maxDiff(555)); // expect: 888 + printf("%d\n", maxDiff(9)); // expect: 8 +} |