博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Remove K Digits 去掉K位数字
阅读量:6803 次
发布时间:2019-06-26

本文共 1474 字,大约阅读时间需要 4 分钟。

 

Given a non-negative integer num represented as a string, remove k digits from the number so that the new number is the smallest possible.

Note:

  • The length of num is less than 10002 and will be ≥ k.
  • The given num does not contain any leading zero.

 

Example 1:

Input: num = "1432219", k = 3Output: "1219"Explanation: Remove the three digits 4, 3, and 2 to form the new number 1219 which is the smallest.

 

Example 2:

Input: num = "10200", k = 1Output: "200"Explanation: Remove the leading 1 and the number is 200. Note that the output must not contain leading zeroes.

 

Example 3:

Input: num = "10", k = 2Output: "0"Explanation: Remove all the digits from the number and it is left with nothing which is 0.

 

这道题让我们将给定的数字去掉k位,要使得留下来的数字最小,这题跟LeetCode上之前那道有些类似,可以借鉴其中的思路,如果n是num的长度,我们要去除k个,那么需要剩下n-k个,我们开始遍历给定数字num的每一位,对于当前遍历到的数字c,进行如下while循环,如果res不为空,且k大于0,且res的最后一位大于c,那么我们应该将res的最后一位移去,且k自减1。当跳出while循环后,我们将c加入res中,最后我们将res的大小重设为n-k。根据题目中的描述,可能会出现"0200"这样不符合要求的情况,所以我们用一个while循环来去掉前面的所有0,然后返回时判断是否为空,为空则返回“0”,参见代码如下:

 

class Solution {public:    string removeKdigits(string num, int k) {        string res = "";        int n = num.size(), keep = n - k;        for (char c : num) {            while (k && res.size() && res.back() > c) {                res.pop_back();                --k;            }            res.push_back(c);        }        res.resize(keep);        while (!res.empty() && res[0] == '0') res.erase(res.begin());        return res.empty() ? "0" : res;    }};

 

类似题目:

 

转载地址:http://bpuwl.baihongyu.com/

你可能感兴趣的文章
阿里云 Aliplayer高级功能介绍(三):多字幕
查看>>
Data Lake Analytics: 以SQL方式查询Redis数据
查看>>
一条查询sql的执行流程和底层原理
查看>>
ActiveMQ多个消费者消费不均匀问题
查看>>
ovirt自承载引擎安装配置 安装过程中的FQDN问题
查看>>
小米进军欧洲智能手机市场:一面是狂欢,一面是考验
查看>>
提高IO性能(只需要设置 noatime)
查看>>
批处理 启动和关闭 Oracle 11g 服务
查看>>
二手车服务商完成A轮融资,投资方为标志雪铁龙集团
查看>>
一文读懂什么是Java中的自动拆装箱
查看>>
java函数式编程
查看>>
获5.3亿美金融资,亚马逊、红杉入局,自动驾驶“梦之队”Aurora还藏了哪些秘招?...
查看>>
C#-Xamarin利用ZXing.Net.Mobile进行扫码
查看>>
网站有漏洞被攻击篡改了数据该怎么修复解决
查看>>
抖音短视频开发项目跨入社交圈,头条实现社交梦?
查看>>
亲测 | 如何更高效的管理原生微服务应用
查看>>
jQuery UI 自定义样式的日历控件
查看>>
成为优秀UI设计师,必须了解的UI设计规范
查看>>
Memcached源码分析 - LRU淘汰算法(6)
查看>>
数据类型
查看>>