Given string A representative a positive integer which has N digits, remove any k digits of the
number, the remaining digits are arranged according to the original
order to become a new positive integer.Find the smallest integer after remove k digits.
N <= 240 and k <= N,
Example
Given an integer A = “178542”, k = 4
return a string “12”
思路:总体思路是让前面留下来的数字小,就能保证删除后总体小。
1.每次循环,如果A[i]>A[i+1],删除i这个元素;如果找不到则删除最后一个元素;
2.重复(1)步骤k次。
参见:
http://www.jianshu.com/p/a0e0936ed93e
class Solution {
public:
/**
*@param A: A positive integer which has N digits, A is a string.
*@param k: Remove k digits.
*@return: A string
*/
string DeleteDigits(string A, int k) {
// wirte your code here
int len=A.size();
int cnt=0;
while(cnt<k){
string::iterator iter=A.begin();
while(iter!=A.end()){
if(iter==A.end()-1 || *iter>*(iter+1)){
iter=A.erase(iter);
cnt++;
break;
}
iter++;
}
}
string::iterator iter=A.begin();
while(*iter=='0'){
iter=A.erase(iter);
}
return A;
}
};