题目描述:
给一个正整数
NUM1
,计算出新正整数
NUM2
,
NUM2
为
NUM1
中移除
N
位数字后的结果,
需要使得
NUM2
的值最小。
输入描述:
1.
输入的第一行为一个字符串,字符串由
0-9
字符组成,记录正整数
NUM1
,
NUM1
长度小
于
32
。
2.
输入的第二行为需要移除的数字的个数,小于
NUM1
长度。
如:
2615371
4
输出描述:
输出一个数字字符串,记录最小值
NUM2
。
如:
131
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String num1 = sc.nextLine();
// 数字num1的长度
int delSum = Integer.parseInt(sc.nextLine());
// 剩余字符串的长度
int sum = num1.length();
// 当前下角标
int returnSum = num1.length() - delSum;
// 返回的最小数字
int currentIndex = 0;
// 寻找第几位数字
String ret = "";
int index = 1;
while (ret.length() < returnSum){
// 求当前位的最小值
// 获取第index位的最小数
int min = Integer.MAX_VALUE;
for (int i = currentIndex; i < sum - (returnSum - index); i++) {
// char转int
int temp = num1.charAt(i) - '0';
// 获取第index位的最小数的下角标
min = Integer.min(min, temp);
}
for (int i = currentIndex; i < sum - (returnSum - index); i++) {
if(num1.charAt(i) - '0' == min){
currentIndex = i;
break;
}
}
// 下一次从当前位的下一位开始遍历
ret = ret + "" + min;
// 开始遍历下一位
currentIndex++;
index++;
}
System.out.println(ret);
}