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();
//			while(!stack.isEmpty()) {
//				sb.append(stack.pop());
//			}
//			sb.reverse();
//			if(sb.length()==0) {
//				System.out.println(0);
//			}
//			else {
//				System.out.println(Integer.parseInt(sb.toString()));
//			}
			
		}
	}

}

Double click to view unformatted code.


Back to problem 609