【华为OD机试真题 】找最小数(java版)

719 阅读1分钟

给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果,需要使得NUM2的值最小。

b1f250224c4b5cda2717295dfbf2ad3.png 038449fd0c994ca7aec9e851468e654.png 0167725ca83b7bc003d16dba15f1b36.png `public class Main{

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    String  s = sc.nextLine();
    int m = sc.nextInt();
    int l = m+1;        //截取字符的右边界
    int index = 0;
    String res = "";

    while (res.length()<s.length()-m){
        String str = s.substring(index,l);        //求出第一个数字的最小值
        int min = Integer.MAX_VALUE;
        int len = str.length();
        int[] ints = new int[len];
        for(int i=0;i<len;i++){
            int temp = str.charAt(i)-'0';   //char转换成int
            ints[i] = temp; //放入数组求出下标
            if(res=="" && temp==0){ //第一位不能为0(如没有要求可以删掉)
                continue;
            }
            min = Math.min(min,temp);
        }
        res+=String.valueOf(min);

        for(int i=0;i<len;i++){
            if(ints[i] == min){
                index += i;      //求出第一个最小值的下标然后去截取循环获取最小值
                break;
            }
        }
        index++;
        l++;//数字要往后移一位
    }
    System.out.println(res);
}

}`