移出k個數
阿新 • • 發佈:2020-11-27
*給定一個以字串表示的非負整數num,移除這個數中的k位數字,使得剩下的數字最小。
*
輸入:num="1432219",k=3
輸出:"1219"
解釋:移除掉三個數字4,3,和2形成一個新的最小的數字1219。
*/
思路:
/**
*從左到右遍歷每一位,放入stack
*彈出stack與當前比較,彈出較大替換,彈出較小插入,直到替換了k個為止
*對於0開頭不斷擷取直到第一位不是0
*/
if(k==num.length()){ return "0"; } Stack<Character> s=new Stack();; int r=k; s.push(num.charAt(0)); String str=""; for(int i=1;i<num.length();i++){ while(!s.isEmpty()&&r>0&&s.peek()>num.charAt(i)){ s.pop(); r--; } s.push(num.charAt(i)); } char []c=new char[s.size()]; for(int i=s.size()-1;i>=0;i--){ c[i]=s.pop(); } for(int i=0;i<num.length()-k;i++){ str=str+c[i]; } while(str.length()>1&&str.charAt(0)=='0') str=str.substring(1, str.length()); return str;