给定一个正整数 ,请找出由该正整数各个数位组成的大于其本身的 最小整数,成功找到将其返回,否则返回-1 。 注意答案在 范围内
区块链毕设网qklbishe.com为您提供问题的解答
给定一个正整数 ,请找出由该正整数各个数位组成的大于其本身的最小整数,成功找到将其返回,否则返回-1 。
注意答案在范围内
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ public int nextGreaterElement(int n) { // write code here String[] array = String.valueOf(n).split(""); // 转int数组好操作 int[] intArr = new int[array.length]; for (int i = 0; i < intArr.length; i++) { intArr[i] = Integer.parseInt(array[i]); } // 先取最后一位,从后往前比较 int index = intArr.length - 1; while (index > 0) { for (int i = index; i > 0; i--) { if (intArr[i - 1]==0){ // 跳过特殊值0 continue; } if (intArr[index] > intArr[i - 1]) { swap(intArr, index, i - 1); return transInt(intArr, i - 1); } } // 继续向前取一位 index--; } return -1; } private int transInt(int[] intArr, int index) { // 把发生交换位之后的数字按升序排列,这样一定最小 Arrays.sort(intArr, index + 1, intArr.length); StringBuilder sb = new StringBuilder(); for (int i = 0; i <= intArr.length - 1; i++) { sb.append(intArr[i]); } // 防止溢出,先转Long试一试 if (Long.parseLong(sb.toString()) > Integer.MAX_VALUE) { return -1; } else { return Integer.parseInt(sb.toString()); } } // 交换两个元素 private void swap(int[] intArr, int i, int i1) { int temp = intArr[i]; intArr[i] = intArr[i1]; intArr[i1] = temp; } }
24:47
以上就是关于问题给定一个正整数 ,请找出由该正整数各个数位组成的大于其本身的 最小整数,成功找到将其返回,否则返回-1 。
注意答案在 范围内的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训