-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmaximum_swap.cpp
More file actions
38 lines (33 loc) · 1000 Bytes
/
maximum_swap.cpp
File metadata and controls
38 lines (33 loc) · 1000 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 最大交换
// https://leetcode.cn/problems/maximum-swap/
// INLINE ../../images/math/maximum_swap.jpeg
// 解题思路:选择排序
#include <algorithm>
#include <headers.hpp>
#include <string>
class Solution {
public:
int maximumSwap(int num) {
// 如果num小于10,则直接返回num
if (num < 10)
return num;
// 将num转化为字符串类型
string str = to_string(num);
for (int i = 0; i < str.size(); i++) {
int max_index = i;
for (int j = str.size() - 1; j > i; j--) {
// 找到字符串中最大的数值,并记录它的下标
if (str[j] > str[max_index]) {
max_index = j;
}
}
// 如果最大值的下标不是i,则交换i和最大值下标对应的值,并返回转化为整型后的字符串
if (max_index != i) {
swap(str[max_index], str[i]);
return atoi(str.c_str());
}
}
// 如果不存在交换,则直接返回原数值
return num;
}
};