分析: 1.输入一个正整数num1,从终端输入一行,通过字符串获取;共n位 2.输入一个正整数m,小于num1的位数(如果m>=n,直接返回) 3.1(逻辑1)一个n位数剔除m位,剩余(n-m)位,num1从左向右,优先剔除数字比较大的m个数字;剩余就是时num2;如遇到相同的数字,优先剔除高位上的; 3.2(逻辑2)直接从左向右取最小值(取n-m个)输出即可。 4.输出:最小 num2 【Java代码】
逻辑1:
逻辑1代码有bug先删除。
逻辑2代码:
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //第一行输入连续的n位数字 String str = scanner.nextLine(); //定义一维数组,存数字num1 // ArrayList<Integer> arrayList = new ArrayList<>(); // for (int i = 0; i < n; i++) { // arrayList.add(Integer.parseInt(String.valueOf(str.charAt(i)))); // } //第二行输入正整数m,代表要移除的位数 int m = scanner.nextInt(); scanner.close(); if(m>= str.length()){ return; } int rightindex = m+1; int start =0; String res = ""; //定义结果字符串 while (res.length()< str.length()-1&& rightindex<=str.length()){ String string = str.substring(start,rightindex); //从0到m+1 int min = Integer.MAX_VALUE; int len = string.length(); int[] ints = new int[len]; for (int i = 0; i < len; i++) { int temp =string.charAt(i) - '0'; //char转换int ints[i] = temp; if(temp == 0 &&res ==""){ continue; } min = Math.min(min,temp); } res += String.valueOf(min); //最小的放入res for (int i = 0; i < len; i++) { if(ints[i]==min){ start += i; break; } } start++; rightindex++; } System.out.println(Integer.parseInt(res) ==Integer.MAX_VALUE ? 0 : res); }