Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Solution {
- private:
- void add_digit(string &res, char &ch){
- if (!(ch == '0' && res.size() == 0))
- res += ch;
- }
- public:
- string removeKdigits(string num, int k) {
- string result = "";
- char last_char = '?';
- if (num.size() == k) return "0";
- for (char current_char : num) {
- if (k == 0){
- if (last_char != '?') {
- add_digit(result, last_char);
- last_char = '?';
- }
- add_digit(result, current_char);
- }
- else {
- if (last_char == '?') {
- last_char = current_char;
- continue;
- }
- if (current_char >= last_char) {
- add_digit(result, last_char);
- } else {
- k--;
- }
- last_char = current_char;
- }
- }
- if (last_char != '?')
- result += last_char;
- for (long pos = result.size() - 1; pos >= 0; pos--){
- if (k == 0) break;
- if (result[pos] == '0')
- continue;
- result.erase(pos, 1);
- k--;
- }
- if (result == "")
- result = "0";
- return result;
- }
- };
- int main(int argc, const char * argv[]) {
- Solution sol;
- cout << sol.removeKdigits("1234506789", 9) << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement