AcWing 1453. 移掉K位数字——Java版代码——自行实现
原题链接
中等
作者:
三玖天下第一
,
2021-01-24 13:55:22
,
所有人可见
,
阅读 386
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] temp = reader.readLine().split("");
int k = Integer.parseInt(reader.readLine());
StringBuilder builder = new StringBuilder();
int i = 0;
while (i < temp.length && k != 0) {
//此处的判定条件是“当builder不为空且builder的最后一位大于输入数据中待比较的那一位时,删除builder
//的最后一位数据,k--。否则将当前数据插入builder。
if (builder.length() != 0 &&
Integer.parseInt(String.valueOf(builder.charAt(builder.length()-1))) >
Integer.parseInt(temp[i])){
builder.deleteCharAt(builder.length()-1);
k--;
}else{
builder.append(temp[i++]);
}
}
while (i != temp.length){//如果输入数据还没有完全插入builder中,将其全部插入
builder.append(temp[i]);
i++;
}
while (k != 0){//如果还没有删除足够的位数,从后往前删除builder中的数据
builder.deleteCharAt(builder.length()-1);
k--;
}
//当builder不为空时,删除所有的先导0
while (builder.length() != 0 && Integer.parseInt(String.valueOf(builder.charAt(0))) == 0){
builder.deleteCharAt(0);
}
System.out.println(builder.length() == 0 ? 0 :builder.toString());
}
}