首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Algorithm 06:删数有关问题

2012-09-10 
Algorithm 06:删数问题问题:键盘输入一个高精度的正整数N(N240位),去掉任意S个数字后剩下的数字按原来左

Algorithm 06:删数问题
问题:键盘输入一个高精度的正整数N(N<=240位),去掉任意S个数字后剩下的数字按原来左右次序组成一个新的正整数。编程实现对给定的N和S,寻找一种解决方案,使得剩下的数最小。

例如,给定的N=178543,S=4,则得到的结果为13


答:实现代码如下:

/**  * @author: YuHuang  * @date: 2011-11-30  * @summary: Just for fun.  */public class DeleteNumberProblem {        public static String doDelete(String n,int s){                char[] numberArray = n.toCharArray();                int len = numberArray.length;                if(len<=s) {                        System.out.println("invalid s!");                        return null;                }else{                        int deleteLength = 0;                        int pos = 1;                        while(pos<len){                                if(numberArray[pos]<numberArray[pos-1]) {                                        int i=pos;                                        while(i<len){                                                numberArray[i-1] = numberArray[i];                                                ++i;                                        }                                        pos = pos>1 ? --pos:pos;                                        --len;                                        ++deleteLength;                                }else{                                        pos++;                                }                                if(deleteLength==s) break;                        }                        len = len-(s-deleteLength);                }                StringBuilder sb = new StringBuilder();                for(int index=0;index<len;++index){                        sb.append(numberArray[index]);                }                return sb.toString();        }        public static void main(String[] args) {                String n = "178543";                int s = 4;                String result = DeleteNumberProblem.doDelete(n,s);                System.out.println(result);        }}


代码运行结果:
Lab-Computer-0db2f6:JavaExercises labuser$ javac DeleteNumberProblem.java
Lab-Computer-0db2f6:JavaExercises labuser$ java DeleteNumberProblem
13
Lab-Computer-0db2f6:JavaExercises labuser$





热点排行