/*
给定一个非负的、字符串形式的整形数字,例如“12353789”,
字符串的长度也就是整形数字的位数不超过10000位,并且字符串不会以0开头,小C需要挑选出其中K个数字(K小于字符串的长度)并删掉他们,
使得剩余字符组成新的整数是最小的。
输入描述
第一行输入一串纯数字形式的字符串,组成一个正整数
第二行输入一个正整数K (K < 字符串的长度)
输出描述
输出一个数字(字符串格式)
*/
//思路:贪心算法,每次都删除左边较大的数字
import java.util.Scanner;
public class RemoveStringNumber {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//输入一串纯数字形式的字符串,组成一个正整数
String num = in.next();
//输入一个正整数K (K < 字符串的长度)
int k = in.nextInt();
int n = num.length();
//答案字符串
StringBuilder res = new StringBuilder();
for (char c : num.toCharArray()) {
while (k > 0 && res.length() > 0 && res.charAt(res.length() - 1) > c) {
res.deleteCharAt(res.length() - 1);
k --;
}
res.append(c);
}
//删除处理后 第一个数字为0
//比如10000408 k=1
while (res.length() > 0 && res.charAt(0) == '0') {
res.deleteCharAt(0);
}
String ans;
ans = res.length() == 0 ? "0" : res.toString();
System.out.println(ans);
}
}
字符串形式的整形数字,删除其中K个数字(K小于字符串的长度), 使得剩余字符组成新的整数是最小的。
最新推荐文章于 2022-09-26 14:59:58 发布