当前位置: 首页 > article >正文

Java中等题-移掉k位数字(力扣)

给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。

 

示例 1 :

输入:num = "1432219", k = 3
输出:"1219"
解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。

示例 2 :

输入:num = "10200", k = 1
输出:"200"
解释:移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。

示例 3 :

输入:num = "10", k = 2
输出:"0"
解释:从原数字移除所有的数字,剩余为空就是 0 。

这道题我的思路跟官方思路差不多,都是用一个东西装入字符,如果后面的字符小于前面已经装入的字符,那就替换掉。但是我没有想到用队列来装字符,所以超时

而且需要判断结果字符串的第一个是否为0

正确的代码如下:

class Solution {
    public String removeKdigits(String num, int k) {
        char[] chars = num.toCharArray();
        int n=chars.length;
        Deque<Character>deque=new ArrayDeque<>();
        for(int i=0;i<n;i++){
            char ch=chars[i];
            while(deque.size()!=0&&k>0&&deque.peekLast()>ch){
                deque.pollLast();
                k--;
            }
            deque.offerLast(ch);
        }
        while(k>0){
            deque.pollLast();
            k--;
        }
        StringBuilder sb=new StringBuilder();
        boolean zero=true;
        while(deque.size()>0){
            char di=deque.pollFirst();
            if(zero&&di=='0'){
                continue;
            }
            zero=false;
            sb.append(di);


        }
        return sb.length()==0?"0":sb.toString();

    }
}


http://www.kler.cn/a/304484.html

相关文章:

  • 离线 快速搭建 docker docker-compose k8s 环境
  • 【数据价值化】国有企业数据资产入表及估值实践指南:挖掘数字资产新价值
  • Oracle 单机及 RAC 环境 db_files 参数修改
  • 【121. 买卖股票的最佳时机】——贪心算法/动态规划
  • [前端]NodeJS常见面试题目
  • 区块链技术在慈善捐赠中的应用
  • Go websocket
  • Python基础学习(1)
  • overleaf如何下载论文的pdf
  • 使用PyTorch进行图像风格迁移:基于VGG19实现
  • Git工作流程
  • Nacos 与 Eureka 的区别
  • vue3 使用 codemirror 实现yaml文件的在线编辑
  • 点餐|基于java的电子点餐系统小程序(源码+数据库+文档)
  • 【Excel 表打印基本操作】
  • 【图像识别】摄像头捕捉运动到静止视频帧(免费源码分享)
  • Maven从入门到精通(三)
  • IVF 视频文件格式
  • [网络][CISCO]CISCO_华为网络设备端口镜像配置
  • Cache Aside pattern
  • EG边缘计算网关连接纵横云3.0物联网平台(MQTT协议)
  • Notepad++插件:TextFX 去除重复行
  • 快速理解Redis
  • 【系统规划与管理师】【案例分析】【考点】【问题篇】第5章 IT服务部署实施
  • MiniCPM-V: A GPT-4V Level MLLM on Your Phone
  • Ansys HFSS的边界条件与激励端口