File tree Expand file tree Collapse file tree 5 files changed +213
-0
lines changed
solution/2500-2599/2566.Maximum Difference by Remapping a Digit Expand file tree Collapse file tree 5 files changed +213
-0
lines changed Original file line number Diff line number Diff line change @@ -162,6 +162,82 @@ func minMaxDifference(num int) int {
162
162
}
163
163
```
164
164
165
+ ### ** TypeScript**
166
+
167
+ ``` ts
168
+ function minMaxDifference(num : number ): number {
169
+ const s = num + ' ' ;
170
+ const min = Number (s .replace (new RegExp (s [0 ], ' g' ), ' 0' ));
171
+ for (const c of s ) {
172
+ if (c !== ' 9' ) {
173
+ return Number (s .replace (new RegExp (c , ' g' ), ' 9' )) - min ;
174
+ }
175
+ }
176
+ return num - min ;
177
+ }
178
+ ```
179
+
180
+ ### ** Rust**
181
+
182
+ ``` rust
183
+ impl Solution {
184
+ pub fn min_max_difference (num : i32 ) -> i32 {
185
+ let s = num . to_string ();
186
+ let min = s
187
+ . replace (char :: from (s . as_bytes ()[0 ]), " 0" )
188
+ . parse :: <i32 >()
189
+ . unwrap ();
190
+ for & c in s . as_bytes () {
191
+ if c != b '9' {
192
+ return s . replace (c , " 9" ). parse (). unwrap () - min ;
193
+ }
194
+ }
195
+ num - min
196
+ }
197
+ }
198
+ ```
199
+
200
+ ### ** C**
201
+
202
+ ``` c
203
+ int getLen (int num) {
204
+ int res = 0;
205
+ while (num) {
206
+ num /= 10;
207
+ res++;
208
+ }
209
+ return res;
210
+ }
211
+
212
+ int minMaxDifference(int num) {
213
+ int n = getLen(num);
214
+ int * nums = malloc(sizeof(int) * n);
215
+ int t = num;
216
+ for (int i = n - 1; i >= 0; i--) {
217
+ nums[ i] = t % 10;
218
+ t /= 10;
219
+ }
220
+ int min = 0;
221
+ for (int i = 0; i < n; i++) {
222
+ min * = 10;
223
+ if (nums[ i] != nums[ 0] ) {
224
+ min += nums[ i] ;
225
+ }
226
+ }
227
+ int max = 0;
228
+ int target = 10;
229
+ for (int i = 0; i < n; i++) {
230
+ max * = 10;
231
+ if (target == 10 && nums[ i] != 9) {
232
+ target = nums[ i] ;
233
+ }
234
+ max += nums[ i] == target ? 9 : nums[ i] ;
235
+ }
236
+ free(nums);
237
+ return max - min;
238
+ }
239
+ ```
240
+
165
241
### **...**
166
242
167
243
```
Original file line number Diff line number Diff line change @@ -140,6 +140,82 @@ func minMaxDifference(num int) int {
140
140
}
141
141
```
142
142
143
+ ### ** TypeScript**
144
+
145
+ ``` ts
146
+ function minMaxDifference(num : number ): number {
147
+ const s = num + ' ' ;
148
+ const min = Number (s .replace (new RegExp (s [0 ], ' g' ), ' 0' ));
149
+ for (const c of s ) {
150
+ if (c !== ' 9' ) {
151
+ return Number (s .replace (new RegExp (c , ' g' ), ' 9' )) - min ;
152
+ }
153
+ }
154
+ return num - min ;
155
+ }
156
+ ```
157
+
158
+ ### ** Rust**
159
+
160
+ ``` rust
161
+ impl Solution {
162
+ pub fn min_max_difference (num : i32 ) -> i32 {
163
+ let s = num . to_string ();
164
+ let min = s
165
+ . replace (char :: from (s . as_bytes ()[0 ]), " 0" )
166
+ . parse :: <i32 >()
167
+ . unwrap ();
168
+ for & c in s . as_bytes () {
169
+ if c != b '9' {
170
+ return s . replace (c , " 9" ). parse (). unwrap () - min ;
171
+ }
172
+ }
173
+ num - min
174
+ }
175
+ }
176
+ ```
177
+
178
+ ### ** C**
179
+
180
+ ``` c
181
+ int getLen (int num) {
182
+ int res = 0;
183
+ while (num) {
184
+ num /= 10;
185
+ res++;
186
+ }
187
+ return res;
188
+ }
189
+
190
+ int minMaxDifference(int num) {
191
+ int n = getLen(num);
192
+ int * nums = malloc(sizeof(int) * n);
193
+ int t = num;
194
+ for (int i = n - 1; i >= 0; i--) {
195
+ nums[ i] = t % 10;
196
+ t /= 10;
197
+ }
198
+ int min = 0;
199
+ for (int i = 0; i < n; i++) {
200
+ min * = 10;
201
+ if (nums[ i] != nums[ 0] ) {
202
+ min += nums[ i] ;
203
+ }
204
+ }
205
+ int max = 0;
206
+ int target = 10;
207
+ for (int i = 0; i < n; i++) {
208
+ max * = 10;
209
+ if (target == 10 && nums[ i] != 9) {
210
+ target = nums[ i] ;
211
+ }
212
+ max += nums[ i] == target ? 9 : nums[ i] ;
213
+ }
214
+ free(nums);
215
+ return max - min;
216
+ }
217
+ ```
218
+
143
219
### **...**
144
220
145
221
```
Original file line number Diff line number Diff line change
1
+ int getLen (int num ) {
2
+ int res = 0 ;
3
+ while (num ) {
4
+ num /= 10 ;
5
+ res ++ ;
6
+ }
7
+ return res ;
8
+ }
9
+
10
+ int minMaxDifference (int num ) {
11
+ int n = getLen (num );
12
+ int * nums = malloc (sizeof (int ) * n );
13
+ int t = num ;
14
+ for (int i = n - 1 ; i >= 0 ; i -- ) {
15
+ nums [i ] = t % 10 ;
16
+ t /= 10 ;
17
+ }
18
+ int min = 0 ;
19
+ for (int i = 0 ; i < n ; i ++ ) {
20
+ min *= 10 ;
21
+ if (nums [i ] != nums [0 ]) {
22
+ min += nums [i ];
23
+ }
24
+ }
25
+ int max = 0 ;
26
+ int target = 10 ;
27
+ for (int i = 0 ; i < n ; i ++ ) {
28
+ max *= 10 ;
29
+ if (target == 10 && nums [i ] != 9 ) {
30
+ target = nums [i ];
31
+ }
32
+ max += nums [i ] == target ? 9 : nums [i ];
33
+ }
34
+ free (nums );
35
+ return max - min ;
36
+ }
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn min_max_difference ( num : i32 ) -> i32 {
3
+ let s = num. to_string ( ) ;
4
+ let min = s
5
+ . replace ( char:: from ( s. as_bytes ( ) [ 0 ] ) , "0" )
6
+ . parse :: < i32 > ( )
7
+ . unwrap ( ) ;
8
+ for & c in s. as_bytes ( ) {
9
+ if c != b'9' {
10
+ return s. replace ( c, "9" ) . parse ( ) . unwrap ( ) - min;
11
+ }
12
+ }
13
+ num - min
14
+ }
15
+ }
Original file line number Diff line number Diff line change
1
+ function minMaxDifference ( num : number ) : number {
2
+ const s = num + '' ;
3
+ const min = Number ( s . replace ( new RegExp ( s [ 0 ] , 'g' ) , '0' ) ) ;
4
+ for ( const c of s ) {
5
+ if ( c !== '9' ) {
6
+ return Number ( s . replace ( new RegExp ( c , 'g' ) , '9' ) ) - min ;
7
+ }
8
+ }
9
+ return num - min ;
10
+ }
You can’t perform that action at this time.
0 commit comments