[leetcode] 402. Remove K Digits 解题报告
来源:互联网 发布:淘宝客服销售技巧 编辑:程序博客网 时间:2024/05/22 22:05
题目链接:https://leetcode.com/problems/remove-k-digits/
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
思路:其基本思想是利用栈尽量维持一个递增的序列,也就是说将字符串中字符依次入栈,如果当前字符串比栈顶元素小,并且还可以继续删除元素,那么就将栈顶元素删掉,这样可以保证将当前元素加进去一定可以得到一个较小的序列.也可以算是一个贪心思想.最后我们只取前len-k个元素构成一个序列即可,如果这样得到的是一个空串那就手动返回0.还有一个需要注意的是字符串首字符不为0
代码如下:
class Solution {public: string removeKdigits(string num, int k) { string ans; int n = k, len = num.size(), cnt = 0; for(auto val: num) { while(!ans.empty() && n > 0 && val < ans.back()) { n--; ans.pop_back(); } ans.push_back(val); } while(ans[cnt]=='0') cnt++; ans = ans.substr(cnt, len-k-cnt); return !ans.size()?"0":ans; }};
0 0
- [leetcode] 402. Remove K Digits 解题报告
- [Leetcode] 402. Remove K Digits 解题报告
- Leetcode 402. Remove K Digits 删除K个数字 解题报告
- 【Leetcode】402. Remove K Digits
- leetcode 402. Remove K Digits
- LeetCode 402. Remove K Digits
- [LeetCode]402. Remove K Digits
- leetcode 402. Remove K Digits
- LeetCode 402. Remove K Digits
- [leetcode]402. Remove K Digits
- LeetCode 402. Remove K Digits
- LeetCode 402. Remove K Digits
- [LeetCode] 402. Remove K Digits
- [LeetCode]402. Remove K Digits
- LeetCode 402. Remove K Digits
- leetcode-402. Remove K Digits
- leetcode 402. Remove K Digits
- Leetcode: 402. Remove K Digits
- Android Studio 使用JNI
- Mybatis 生成Oracle 数据库代码生成器
- explain详解
- 第18个python程序:命名变量代码函数
- 应聘时漂亮的回答
- [leetcode] 402. Remove K Digits 解题报告
- 房地产库存两极分化态势明显
- 【VLC-Android】vlc-android简例
- 规格化数据方法
- 关于js导出excel的标题日期问题
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- 手机短信验证登录
- Java中String类型与时间戳转换 - 24小时和12小时制
- JavaEE程序设计与应用开发