Delete Digits
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 };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步