狐厂笔试中的一道编程题,题目大概意思是,给定一个整数(可能会很大),再给定一个整数n(大于零,小于大整数的长度),要求删除大整数中n个数之后得到的数,其值为最大,输出该数值。
如果上面题目的描述不太清楚,看下面的输入输出用例,恩,大概就这么个意思!
例如:
输入 :523
1
输出 :53
输入 :14251
3
输出 :51
下面给出我的实现代码(java):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String num = sc.next();
int n = sc.nextInt();
int len = num.length();
int []arr = new int[len];
for (int i = 0; i < len; i++) {
arr[i] = num.charAt(i) - '0';
}
int l = 0, r = 0;
int tag = n;
while (tag > 0) {
while (l < len && arr[l] == -1)
l++;
r = l + 1;
while (r < len && arr[r] == -1)
r++;
if (r == len || arr[l] < arr[r]) {
arr[l] = -1;
tag--;
l = 0;
continue;
}
if (arr[l] >= arr[r])
l = r;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
if(arr[i] != -1)
sb.append(arr[i]);
}
System.out.println(sb.toString());
}
sc.close();
}
}