Skip to content

Commit d14210a

Browse files
committed
feat: add solutions to lc problem: No.0670
No.0670.Maximum Swap
1 parent d360347 commit d14210a

File tree

4 files changed

+203
-0
lines changed

4 files changed

+203
-0
lines changed

solution/0600-0699/0670.Maximum Swap/README.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,77 @@ func maximumSwap(num int) int {
151151
}
152152
```
153153

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+
154225
### **...**
155226

156227
```

solution/0600-0699/0670.Maximum Swap/README_EN.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,77 @@ func maximumSwap(num int) int {
137137
}
138138
```
139139

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+
140211
### **...**
141212

142213
```
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
}

0 commit comments

Comments
 (0)