public static String nextPreviousLargeInteger(int up_down){
String src = "12354";
int len = src.length();
int[] srcArray = new int[len];
for(int i=0; i<len; i++){
String tmp = src.substring(i, i+1);
srcArray[i] = Integer.parseInt(tmp);
}
int pos = -1;
int transition = -1;
List<Integer> list = new ArrayList<>();
for (int i=len-1; i>0; i--){
list.add(srcArray[i]);
if(up_down == 0){
if(srcArray[i] < srcArray[i-1]){
pos = i-1;
transition = srcArray[i-1];
break;
}
}else {
if(srcArray[i] > srcArray[i-1]){
pos = i-1;
transition = srcArray[i-1];
break;
}
}
}
if(up_down > 0){
Collections.sort(list);//升序
}else {
//降序
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
}
String resultStr = "";
if(pos > -1){
resultStr = src.substring(0, pos);
for(int i=0; i<list.size(); i++){
if(up_down > 0){
if(transition < list.get(i)){
resultStr += list.get(i)+"";
list.remove(i);
break;
}
}else {
if(transition > list.get(i)){
resultStr += list.get(i)+"";
list.remove(i);
break;
}
}
}
}
list.add(transition);
if(up_down > 0) {
list.sort(Comparator.comparing(Integer::intValue));
}else {
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
}
for (int i=0; i<list.size(); i++){
resultStr += list.get(i)+"";
}
return resultStr;
}
Java给出一个数字符串,输出给定数字下一个比它大的数字 up_down = 0 上一个最大数, >0 下一个最大数
于 2024-03-18 09:34:43 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)