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"
Runtime: 13ms.
1 class Solution { 2 public: 3 /** 4 *@param A: A positive integer which has N digits, A is a string. 5 *@param k: Remove k digits. 6 *@return: A string 7 */ 8 string DeleteDigits(string A, int k) { 9 // wirte your code here 10 11 // find the first decrease index and erase index - 1 12 // continue with the new string 13 if (k == A.size()) return ""; 14 15 int count = 0; 16 while (count++ < k) { 17 bool erased = false; 18 for (int i = 1; i < A.size(); i++) { 19 if (A[i] < A[i - 1]) { 20 A.erase(i - 1, 1); 21 erased = true; 22 break; 23 } 24 } 25 if (!erased) A.erase(A.size() - 1, 1); 26 } 27 // ensure that there is no leading 0s in A 28 int i = 0; 29 while (i < A.size() && A[i] == '0') i++; 30 return A.substr(i, A.size() - i); 31 } 32 };