整数m去掉n位后剩下最大(小)值

题目描述

给定一个正整数(<=255位),从中删去n位后,使得剩下的数字组成的新数最小(大);

思路:从左到右开始扫描,两两比较,如果是前一位比后一位大,则删去前大的一位,直到删完所有的n位;

         【从论坛看到的一个题目,觉得挺好的,代码是论坛的大佬写的,不过好像没处理好以0开头的问题。】

        再贴一个c写的吧,这也写得挺好的:https://blog.csdn.net/liveas/article/details/5732759

 1 public static void main(String[] args) {
 2         // TODO Auto-generated method stub
 3         int i,j,k,length,n,m;
 4         Scanner sc=new Scanner(System.in);    //warning :leak: 'sc' is never closed
 5         String s=sc.nextLine();   //输入的整型数;
 6         char c;
 7         n=sc.nextInt();
 8         int index;
 9         sc.close();
10         if(n>s.length())     //如果删除的长度比输入的整数本身还要大就报错;
11         {
12             System.out.println("Error!");
13             return;
14         }for(i=0;i<n;i++)
15         {
16             j=0;        //j重新从0下标开始;
17             while(j<s.length())
18             {
19                 if(j==s.length()-1)
20                 {
21                     s=s.substring(0, j);
22                     break;
23                 }
24                 index=j+1;
25                 c=s.charAt(index);
26                 if(s.charAt(j)-'0'<=(c-'0'))
27                 {
28                     j++;
29                     continue;
30                 }
31                 else
32                 {
33                   s=s.substring(0,j)+s.substring(index,s.length());      //把j位的字符截去;
34                   break;
35                 }
38             }
39         }
40         System.out.println(s);
41     }

猜你喜欢

转载自www.cnblogs.com/Guhongying/p/9079278.html