View Code of Problem 609

import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		while(scanner.hasNext()) {
			String num=scanner.nextLine();
			int k=Integer.parseInt(scanner.nextLine());
//			LinkedList<Character> stack = new LinkedList<Character>();
//	        
//		    for(char digit : num.toCharArray()) {
//		      while(stack.size() > 0 && k > 0 && stack.peekLast() > digit) {
//		        stack.removeLast();
//		        k -= 1;
//		      }
//		      stack.addLast(digit);
//		    }
//		        
//		    /* remove the remaining digits from the tail. */
//		    for(int i=0; i<k; ++i) {
//		      stack.removeLast();
//		    }
//		        
//		    // build the final string, while removing the leading zeros.
//		    StringBuilder ret = new StringBuilder();
//		    boolean leadingZero = true;
//		    for(char digit: stack) {
//		      if(leadingZero && digit == '0') continue;
//		      leadingZero = false;
//		      ret.append(digit);
//		    }
//		        
//		    /* return the final string  */
//		    if (ret.length() == 0) {
//		    	System.out.println( "0");
//		    }
//		    else {
//		    	System.out.println( ret.toString());
//		    }
		    

			Stack<Character> stack=new Stack<>();
			char[] c=num.toCharArray();
			for(char c1:c) {
				while(stack.size()>0&&k>0&&stack.peek()>c1) {
					stack.pop();
					k--;
				}
				stack.push(c1);
			}
			for(int i=0;i<k;i++) {
				stack.pop();
			}
			StringBuilder sb=new StringBuilder();
			boolean leadingZero=true;
			for(char c1:stack) {
				if(leadingZero&&c1=='0') {
					continue;
				}
				leadingZero=false;
				sb.append(c1);
			}
			if(sb.length()==0) {
				System.out.println(0);
			}
			else {
				System.out.println(sb.toString());
			}
			
		}
	}

}

Double click to view unformatted code.


Back to problem 609