题目
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。文章来源地址https://www.toymoban.com/news/detail-823113.html
解题思路
- 将数字转换成字符数组便于遍历;
- 寻找是否存在比当前元素大的元素,取最后匹配到的元素,进行交换并跳出循环;
代码展示
class Solution {
public int maximumSwap(int num) {
char[] data = String.valueOf(num).toCharArray();
for(int i = 0; i < data.length; i++){
char max = data[i];
int no = i;
for(int j = i + 1; j < data.length; j++){
if(data[j] > max || (data[j] == max && no != i)){
max = data[j];
no = j;
}
}
if(no != i){
data[no] = data[i];
data[i] = max;
break;
}
}
return Integer.valueOf(new String(data));
}
}
文章来源:https://www.toymoban.com/news/detail-823113.html
到了这里,关于670. 最大交换 --力扣 --JAVA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!