View Code of Problem 609

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner in =new Scanner(System.in);
		while(in.hasNext()) {
			StringBuffer sb = new StringBuffer(in.next());
			int n  =in.nextInt();
			while(n>0) {
				int zerobefore = findzerobefore(sb);
				if(zerobefore!=-1) {
					if(zerobefore<=n) {
						sb.delete(0, zerobefore);
						n-=zerobefore;
						re0(sb);
						if(sb.length()==0) {
							sb.append("0");
							break;
						}
					}else {
						int maxloc = findmax(sb);
						sb.deleteCharAt(maxloc);
						n--;
						if(sb.length()==0) {
							sb.append("0");
							break;
						}
					}
				}else {
					int maxloc = findmax(sb);
					sb.deleteCharAt(maxloc);
					n--;
					if(sb.length()==0) {
						sb.append("0");
						break;
					}
				}
			}
			System.out.println(sb);
		}
	}
	public static int findzerobefore(StringBuffer sb) {
		for(int i =0;i<sb.length();i++) {
			if(sb.charAt(i)=='0') {
				return i;					
			}
		}
		return -1;
	}
	public static int findmax(StringBuffer sb) {
		int max=sb.charAt(0);
		int maxloc=0;
		for(int i =1;i<sb.length();i++) {
			if(sb.charAt(i)<max) {
				return maxloc;
			}else {
				max=sb.charAt(i);
				maxloc=i;
			}
		}
		return maxloc;
	}
	public static void re0(StringBuffer sb) {
		while(sb.length()>0) {
			if(sb.charAt(0)=='0') {
				sb.deleteCharAt(0);
			}else {
				break;
			}
		}
	}
}

Double click to view unformatted code.


Back to problem 609