File tree Expand file tree Collapse file tree 4 files changed +203
-0
lines changed
solution/0600-0699/0670.Maximum Swap Expand file tree Collapse file tree 4 files changed +203
-0
lines changed Original file line number Diff line number Diff line change @@ -151,6 +151,77 @@ func maximumSwap(num int) int {
151
151
}
152
152
```
153
153
154
+ ### ** TypeScript**
155
+
156
+ ``` ts
157
+ function maximumSwap(num : number ): number {
158
+ const list = new Array ();
159
+ while (num !== 0 ) {
160
+ list .push (num % 10 );
161
+ num = Math .floor (num / 10 );
162
+ }
163
+ const n = list .length ;
164
+ const idx = new Array ();
165
+ for (let i = 0 , j = 0 ; i < n ; i ++ ) {
166
+ if (list [i ] > list [j ]) {
167
+ j = i ;
168
+ }
169
+ idx .push (j );
170
+ }
171
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
172
+ if (list [idx [i ]] !== list [i ]) {
173
+ [list [idx [i ]], list [i ]] = [list [i ], list [idx [i ]]];
174
+ break ;
175
+ }
176
+ }
177
+ let res = 0 ;
178
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
179
+ res = res * 10 + list [i ];
180
+ }
181
+ return res ;
182
+ }
183
+ ```
184
+
185
+ ### ** Rust**
186
+
187
+ ``` rust
188
+ impl Solution {
189
+ pub fn maximum_swap (mut num : i32 ) -> i32 {
190
+ let mut list = {
191
+ let mut res = Vec :: new ();
192
+ while num != 0 {
193
+ res . push (num % 10 );
194
+ num /= 10 ;
195
+ }
196
+ res
197
+ };
198
+ let n = list . len ();
199
+ let idx = {
200
+ let mut i = 0 ;
201
+ (0 .. n )
202
+ . map (| j | {
203
+ if list [j ] > list [i ] {
204
+ i = j ;
205
+ }
206
+ i
207
+ })
208
+ . collect :: <Vec <usize >>()
209
+ };
210
+ for i in (0 .. n ). rev () {
211
+ if list [i ] != list [idx [i ]] {
212
+ list . swap (i , idx [i ]);
213
+ break ;
214
+ }
215
+ }
216
+ let mut res = 0 ;
217
+ for i in list . iter (). rev () {
218
+ res = res * 10 + i ;
219
+ }
220
+ res
221
+ }
222
+ }
223
+ ```
224
+
154
225
### ** ...**
155
226
156
227
```
Original file line number Diff line number Diff line change @@ -137,6 +137,77 @@ func maximumSwap(num int) int {
137
137
}
138
138
```
139
139
140
+ ### ** TypeScript**
141
+
142
+ ``` ts
143
+ function maximumSwap(num : number ): number {
144
+ const list = new Array ();
145
+ while (num !== 0 ) {
146
+ list .push (num % 10 );
147
+ num = Math .floor (num / 10 );
148
+ }
149
+ const n = list .length ;
150
+ const idx = new Array ();
151
+ for (let i = 0 , j = 0 ; i < n ; i ++ ) {
152
+ if (list [i ] > list [j ]) {
153
+ j = i ;
154
+ }
155
+ idx .push (j );
156
+ }
157
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
158
+ if (list [idx [i ]] !== list [i ]) {
159
+ [list [idx [i ]], list [i ]] = [list [i ], list [idx [i ]]];
160
+ break ;
161
+ }
162
+ }
163
+ let res = 0 ;
164
+ for (let i = n - 1 ; i >= 0 ; i -- ) {
165
+ res = res * 10 + list [i ];
166
+ }
167
+ return res ;
168
+ }
169
+ ```
170
+
171
+ ### ** Rust**
172
+
173
+ ``` rust
174
+ impl Solution {
175
+ pub fn maximum_swap (mut num : i32 ) -> i32 {
176
+ let mut list = {
177
+ let mut res = Vec :: new ();
178
+ while num != 0 {
179
+ res . push (num % 10 );
180
+ num /= 10 ;
181
+ }
182
+ res
183
+ };
184
+ let n = list . len ();
185
+ let idx = {
186
+ let mut i = 0 ;
187
+ (0 .. n )
188
+ . map (| j | {
189
+ if list [j ] > list [i ] {
190
+ i = j ;
191
+ }
192
+ i
193
+ })
194
+ . collect :: <Vec <usize >>()
195
+ };
196
+ for i in (0 .. n ). rev () {
197
+ if list [i ] != list [idx [i ]] {
198
+ list . swap (i , idx [i ]);
199
+ break ;
200
+ }
201
+ }
202
+ let mut res = 0 ;
203
+ for i in list . iter (). rev () {
204
+ res = res * 10 + i ;
205
+ }
206
+ res
207
+ }
208
+ }
209
+ ```
210
+
140
211
### ** ...**
141
212
142
213
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn maximum_swap ( mut num : i32 ) -> i32 {
3
+ let mut list = {
4
+ let mut res = Vec :: new ( ) ;
5
+ while num != 0 {
6
+ res. push ( num % 10 ) ;
7
+ num /= 10 ;
8
+ }
9
+ res
10
+ } ;
11
+ let n = list. len ( ) ;
12
+ let idx = {
13
+ let mut i = 0 ;
14
+ ( 0 ..n)
15
+ . map ( |j| {
16
+ if list[ j] > list[ i] {
17
+ i = j;
18
+ }
19
+ i
20
+ } )
21
+ . collect :: < Vec < usize > > ( )
22
+ } ;
23
+ for i in ( 0 ..n) . rev ( ) {
24
+ if list[ i] != list[ idx[ i] ] {
25
+ list. swap ( i, idx[ i] ) ;
26
+ break ;
27
+ }
28
+ }
29
+ let mut res = 0 ;
30
+ for i in list. iter ( ) . rev ( ) {
31
+ res = res * 10 + i;
32
+ }
33
+ res
34
+ }
35
+ }
Original file line number Diff line number Diff line change
1
+ function maximumSwap ( num : number ) : number {
2
+ const list = new Array ( ) ;
3
+ while ( num !== 0 ) {
4
+ list . push ( num % 10 ) ;
5
+ num = Math . floor ( num / 10 ) ;
6
+ }
7
+ const n = list . length ;
8
+ const idx = new Array ( ) ;
9
+ for ( let i = 0 , j = 0 ; i < n ; i ++ ) {
10
+ if ( list [ i ] > list [ j ] ) {
11
+ j = i ;
12
+ }
13
+ idx . push ( j ) ;
14
+ }
15
+ for ( let i = n - 1 ; i >= 0 ; i -- ) {
16
+ if ( list [ idx [ i ] ] !== list [ i ] ) {
17
+ [ list [ idx [ i ] ] , list [ i ] ] = [ list [ i ] , list [ idx [ i ] ] ] ;
18
+ break ;
19
+ }
20
+ }
21
+ let res = 0 ;
22
+ for ( let i = n - 1 ; i >= 0 ; i -- ) {
23
+ res = res * 10 + list [ i ] ;
24
+ }
25
+ return res ;
26
+ }
You can’t perform that action at this time.
0 commit comments