代码:(应该可以写的更加优雅一些)
class Solution {
public:
string minNumberString(string num, int lefts) {
/* 如果预留0长度,则返回空 */
if(0 == lefts)
return "";
/* 剩下的字符串长度和预留字符相等,则不能再剔除字符串,直接返回整个字符串 */
if(num.length() == lefts) {
return num;
}
int minIdx = 0;
char minCh = num[0];
int searchRange = num.length() - lefts + 1;
for(int i = 0; i < searchRange; i++) {
if(num[i] < minCh) {
minCh = num[i];
minIdx = i;
}
}
/* 递归子字符串 */
return minCh + minNumberString(num.substr(minIdx + 1), lefts - 1);
}
string removeKdigits(string num, int k) {
int validIndex = 0;
string output = minNumberString(num, num.length() - k);
/* 在预留字符串为空的情况下是需要返回'0'的 */
if(output.empty())
return "0";
/* 去除头部的'0'字符串 */
while(validIndex < output.length() - 1 && output[validIndex] == '0')
validIndex++;
return output.substr(validIndex);
}
};