整数的K个数字"/>
漫画算法笔记 删除整数的K个数字
漫画算法笔记
删除整数的K个数字
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
//删除整数的K个数字,获得删除后的最小值
string removeKDigits(string num, int k)
{string newNum = num;for (int index_k = 0; index_k < k; ++index_k ){bool bCut = false;//从左向右遍历,找到比自己右侧数字大的数字并删除for(int i = 0; i < (int)(newNum.length() - 1); ++i){if ( newNum.at(i) > newNum.at(i + 1) ){newNum = newNum.substr(0, i) + newNum.substr(i + 1);bCut = true;break;}}//如果没有找到要删除的数字,则删除最后一个数字if (!bCut){newNum = newNum.substr(0, newNum.size() - 1);}//清楚整数左侧的数字for ( int i = 0; i < (int)(newNum.length() - 1); ++i){if (newNum.at(0) != '0'){break;}newNum = newNum.substr(1, newNum.length());}}//如果整数的所有数字都被删除了,直接返回0if (newNum.empty()){return "0";}return newNum;
}int main()
{cout << removeKDigits("1593212", 3) << endl;cout << removeKDigits("30200", 1) << endl;cout << removeKDigits("10", 2) << endl;cout << removeKDigits("541270936", 3) << endl;return 0;
}
更多推荐
漫画算法笔记 删除整数的K个数字
发布评论