保留最大数字

版权声明:本文为博主原创文章,转载附上地址就可以啦,多交流,一起进步。 https://blog.csdn.net/weixin_30363263/article/details/81592081

题目描述

给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。

输入描述:

输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。

输出描述:

输出保留下来的结果。

关键点:

1、首先去考虑这个目标是什么?是留下的数最大,那么什么样的数大,并不是简单地去掉字符串里小的数字,第一位数的大小很大程度上决定了这个数,那么在第一个数小于后面的数的时候我们可以果断删除它;

2、第二种,在该数大于等于后面的数的时候,我们可以再看看,后面的数有没有比这个数小的,一直小的话就删掉最后一个数,如果有该数小于后面的数的话,则删掉该数,这样保证前面的高位的数字是大的数字;

import java.util.Scanner;
 
public class Main{
     
    public static void main(String[] args) {
         
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            StringBuilder sb = new StringBuilder();
            sb.append(sc.next());
            int cnt = sc.nextInt();
             
            for(int i = 0;i < cnt;i++) {
                int j = 0;
                while(j + 1< sb.length() && sb.charAt(j) >= sb.charAt(j+1)) {
                    j++;//这样如果找到的数的话就是该数字比后面的数字小可以删,找不到的话就删除了最后的了
                }
                sb.deleteCharAt(j);//让大的数字打头这样才是硬道理
            }
            System.out.println(sb.toString());
        }
    }
}

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页