题目描述:
给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n。如果不存在这样的32位整数,则返回-1。
示例 1:
输入: 12
输出: 21
示例 2:
输入: 21
输出: -1
和这道题思路差不多。
代码:
class Solution {
public int nextGreaterElement(int n) {
char [] tem = String.valueOf(n).toCharArray();
int len = tem.length;
int [] get = new int[len];
for (int i = 0; i < tem.length; i++) {
char c = tem[i];
get[i] = Integer.parseInt(c + "");
}
int i = 0;
for (i = len - 1; i >= 1; i--) {
if(get[i] > get[i - 1]){
break;
}
}
if(i == 0){
return -1;
}
int min = i - 1;
int mintem = get[min];
int mins = mintem;
int index = i;
while (i < len) {
if(mintem < get[i]){
index = i;
}
i++;
}
// 交换
int tem1 = get[min];
get[min] = get[index];
get[index] = tem1;
Arrays.sort(get,min + 1,len);
int sum = 0;
int pre = 0;
for (int j = 0; j <= get.length - 1 ; j++) {
sum = sum * 10 + get[j];
if(pre > sum){
return -1;
}
pre = sum;
}
return sum;
}
}