题目限定输入是[0, 10^8],因而不用考虑负数或者越界情况,算是减小了难度。

 public class Solution {
/**
* @param num: a non-negative intege
* @return: the maximum valued number
*/
public int maximumSwap(int num) {
// Write your code here
char[] numArrays = String.valueOf(num).toCharArray();
if (numArrays.length < 2) {
return num;
} //第一个递增点:
int firstHeigerPoint = 0;
for (int i = 0; i < numArrays.length - 1; i++) {
if (numArrays[i] < numArrays[i + 1]) {
firstHeigerPoint = i + 1;
break;
}
} if (firstHeigerPoint == 0) {
return num;
} //找到递增点后的最大值(如有相等情况取低位,因而更新条件是numArrays[j] >= max)
int max = numArrays[firstHeigerPoint];
int maxPoint = firstHeigerPoint;
for (int j = firstHeigerPoint; j < numArrays.length; j++) {
if (numArrays[j] >= max) {
max = numArrays[j];
maxPoint = j;
}
} //找到第一个更小的高位
int toSwapIndex = firstHeigerPoint-1;
for (int i = 0; i <= firstHeigerPoint - 1; i++) {
if (numArrays[i] < max) {
toSwapIndex = i;
break;
}
} char temp = numArrays[toSwapIndex];
numArrays[toSwapIndex] = numArrays[maxPoint];
numArrays[maxPoint] = temp; return Integer.parseInt(new String(numArrays));
}
}

最新文章

  1. 开发android App干坏事(一)
  2. bootstrap的基本模板
  3. JavaScript中,格式化DateTime
  4. 本周PSP+历年作品评论
  5. Gdata XML解析配置和简单使用
  6. 关于cornerstone无法上传library文件的问题
  7. 图论(网络流,二分图最小点权覆盖):POJ 2125 Destroying The Graph
  8. 论山寨手机与Android 【14】3G SmartPhone时代的MTK
  9. background-position 具体的使用说明
  10. 宿主机跟Vmware中的linux使用host-only,bridge 方式通信
  11. Android应用测试性能的工具Emmagee,导出文件格式问题分析
  12. RHive
  13. JAVA基础——面向对象三大特性:封装、继承、多态
  14. HTML配色工具!在线配色工具
  15. 从零开始搭建vue开发环境及构建vue项目
  16. synchronized 关键字解析
  17. [原]Jenkins(一)---我理解的jenkins是这样的(附全套PDF下载)
  18. ABAP 省市县级联搜索帮助
  19. linux中的软、硬链接
  20. 标准IO与文件IO 的区别【转】

热门文章

  1. 为啥final类型的map或者arraylist可以修改数据 而final类型的String变量不可以修改数据呢
  2. 4.4.4 无锁的对象引用:AtomicReference和AtomicStampedReference
  3. thinkphp+memcache缓存例子
  4. WebService搭建
  5. Alpha冲刺(九)
  6. 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
  7. python字符串字典列表互转
  8. opencv—读取一张图片并滤波
  9. 在Android模拟器里安装apk
  10. [示例] Drag And Drop for FireMonkey (Win &amp; macOS)