Delete Number
翻译:

主要思路解释
- 整体思路概述:
- 本题的目标是给定整数(要删除的数字个数)和整数(以字符串形式表示的数字),通过合理删除个数字,使得最终得到的新数字最小。程序采用了一种贪心算法的思想,从左到右遍历数字字符串,每次尝试删除能使当前数字变小的高位数字,经过多次这样的操作以及一些边界情况处理后,输出最终得到的最小数字字符串表示的结果。
- 输入与初始化部分:
- 首先定义了多个变量,包括用于存储测试用例数量的、每个测试用例中要删除数字个数的、数字字符串长度的以及用于循环计数的和等,同时定义了字符数组用于存储输入的数字字符串。通过
scanf函数读取测试用例的数量,然后进入外层while循环处理每个测试用例。在每个测试用例中,先读取要删除的数字个数和数字字符串,接着使用strlen函数获取字符串 (n的长度并存储到len` 变量中。
- 首先定义了多个变量,包括用于存储测试用例数量的、每个测试用例中要删除数字个数的、数字字符串长度的以及用于循环计数的和等,同时定义了字符数组用于存储输入的数字字符串。通过
- 核心处理逻辑部分(寻找并删除数字):
- 外层
for循环用于遍历数字字符串(除了最后一个字符,因为比较时是和下一个字符对比),在循环中,对于每个字符位置 (i,判断如果当前字符n[i]大于下一个字符n[i + 1],并且还有可删除的数字(m不等于0),这意味着删除当前字符可以使得到的新数字更小。此时,通过内层for循环将当前字符后面的所有字符依次向前移动一位(n[j] = n[j + 1]),实现删除当前字符的效果,然后将字符串长度len减1(因为删除了一个字符),可删除数字个数m也减1。为了确保能重新从字符串开头开始检查是否还有可删除的能使数字变小的字符,将i重置为 -1,并且如果此时已经删除了足够数量的数字(m变为0),就直接跳出外层for` 循环,不再继续寻找可删除的数字了。
- 外层
- 处理前导零及输出结果部分:
- 首先通过一个
while循环找到处理后的字符串中第一个非零字符的位置,存储到变量a中,跳过前面可能存在的连续的 0。然后通过一个for循环从第一个非零字符位置a开始,到len - m结束(因为已经删除了m个字符),逐个输出剩余字符串的字符,这就是最终得到的删除m个数字后的数字字符串表示。最后,再判断如果第一个非零字符的位置a大于等于剩余字符串的长度(len - m),说明剩下的字符串全是 0 或者为空,此时输出 0 作为最终结果,并且每个测试用例输出完结果后进行换行操作,以便下一个测试用例的结果能正确显示,持续处理所有测试用例,直到全部处理完毕。
- 首先通过一个
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int T, m, len, i, j; // T用于存储测试用例的数量,m表示每个测试用例中要删除的数字个数,len用于记录输入数字字符串的长度,i、j主要用于循环计数char n[1002]; // 定义字符数组n,用于存储输入的数字字符串,大小设为1002,可根据题目中数字字符串长度的限制进行合理设置// 读取测试用例的数量Tscanf("%d", &T);// 外层while循环,针对每个测试用例进行处理,每处理完一个测试用例,T减1,直到所有测试用例都处理完while (T--){// 读取当前测试用例中要删除的数字个数m以及数字字符串nscanf("%d%s", &m, &n);len = strlen(n); // 获取输入数字字符串n的长度// 如果要删除的数字个数m大于等于字符串的长度len,说明要删除的数字太多,直接输出0,并通过continue跳过当前测试用例后续的处理步骤,直接进入下一个测试用例的处理if (m >= len){printf("0\n");continue;}// 外层for循环用于遍历数字字符串(除了最后一个字符,因为比较时是和下一个字符对比),尝试找到可以删除的数字,以得到最小的新数字for (i = 0; i < len - 1; i++){// 如果当前字符大于下一个字符,且还有可删除的数字(m不等于0),说明可以通过删除当前字符来使得到的新数字更小if (n[i] > n[i + 1] && m!= 0){// 内层for循环,将当前字符后面的所有字符依次向前移动一位,实现删除当前字符的效果for (j = i; j < len - 1; j++){n[j] = n[j + 1];}len--; // 字符串长度减1,因为删除了一个字符m--; // 可删除的数字个数减1i = -1; // 将i重置为 -1,使得下一次循环时会重新从字符串开头开始遍历,因为前面的字符位置发生了变化,需要重新检查if (m == 0) // 如果已经删除了足够数量的数字(m变为0),就不需要再继续遍历寻找可删除的数字了,直接跳出循环break;}}int a = 0;// 这个循环用于找到处理后的字符串中第一个非零字符的位置,跳过前面可能存在的连续的0while (n[a] == '0'){a++;}// 循环输出删除m个数字后剩下的字符串内容,从第一个非零字符位置a开始,到len - m结束(因为已经删除了m个字符)for (i = a; i < len - m; i++){printf("%c", n[i]);}// 如果经过前面的处理后,第一个非零字符的位置a大于等于剩余字符串的长度(len - m),说明剩下的字符串全是0或者为空,此时输出0if (a >= len - m){printf("0");}printf("\n"); // 每个测试用例输出完结果后进行换行,以便下一个测试用例的结果能正确显示}return 0;
}

相关文章:
Delete Number
翻译: 主要思路解释 整体思路概述: 本题的目标是给定整数(要删除的数字个数)和整数(以字符串形式表示的数字),通过合理删除个数字,使得最终得到的新数字最小。程序采用了一种贪心算…...
Linux常用快捷键
目录 编辑 剪切/复制/粘贴/删除等快捷键 终端及标签页快捷键 历史命令快捷键 移动光标快捷键 控制命令 剪切/复制/粘贴/删除等快捷键 快捷键 功能 ShiftCtrlC 复制 ShiftCtrlV 粘贴 CtrlInsert 复制命令行内容 ShiftInsert 粘贴命令行内容 Ctrlk 剪切&#…...
针对xpath局限的解决方案
上篇《网页数据提取利器 -- Xpath》我们对xpath的介绍中提到了xpath的几点局限性: 结构依赖性强性能动态网页支持不足 本篇是针对这些局限提出的解决方案和补充方法,以提升 XPath 的实用性和适应性。 1. 动态网页的处理 局限: XPath 无法…...
深入解析 HTML Input 元素:构建交互性表单的核心
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
ffmpeg转码与加水印
文章目录 转码 与加水印引入jar包代码ffmpeg安装错误解决方法 转码 与加水印 引入jar包 <dependency><groupId>net.bramp.ffmpeg</groupId><artifactId>ffmpeg</artifactId><version>0.6.2</version></dependency>代码 impo…...
Leetcode 104. 二叉树的最大深度(Java-深度遍历)
题目描述: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:…...
阳明心学-传习录学习总结
资料 王阳明介绍:明代杰出的思想家、军事家、教育家;自刑部主事历任贵州龙场驿丞、庐陵知县、右佥都御史、南赣巡抚、两广总督等职,接连平定南赣、两广盗乱及宸濠之乱,因功获封“新建伯”,成为明代因军功封爵的三位文…...
macOS sequoia 15.1中应用程序“程序坞”没有权限打开
在macOS sequoia 15.1版本中新安装的应用程序在访达中打开报错显示应用程序“程序坞”没有权限打开“(null)”。 解决办法 在启动台中找到终端,点击打开,切换到应用目录下,输入 cd /Applications/ 找到需要打开的应用程序目录࿰…...
使用 MinIO 和 KKFileView 实现在线文件预览功能
在项目开发中,文件的在线预览是常见的需求,尤其是对 PDF、Word、Excel 等格式的文件进行无客户端依赖的直接查看。本文将介绍如何通过 MinIO 和 KKFileView 搭建在线文件预览服务,并通过 docker-compose 一键部署。 一、环境准备 1. Docker …...
Conda-Pack打包:高效管理Python环境
在Python开发中,环境管理是一个不可忽视的重要环节。Conda是一个流行的包管理器和环境管理器,它允许用户创建隔离的环境,以避免不同项目之间的依赖冲突。Conda-pack是一个工具,可以帮助我们将一个conda环境打包成一个可移植文件&a…...
云服务器上搭建 WordPress 全流程指南
WordPress 是全球最受欢迎的开源内容管理系统(CMS),通过 WordPress,你可以轻松搭建博客、企业网站或电子商务平台。而通过云服务器搭建 WordPress,可以使网站获得更好的性能和灵活性。本文将为你提供详细的步骤&#x…...
图像超分辨率技术新进展:混合注意力聚合变换器HAAT
目录 1. 引言: 2. 混合注意力聚合变换器(HAAT): 2.1 Swin-Dense-Residual-Connected Block(SDRCB): 2.2 Hybrid Grid Attention Block(HGAB): 3. 实验结…...
文件IO——01
1. 认识文件 1)文件概念 “文件”是一个广义的概念,可以代表很多东西 操作系统里,会把很多的硬件设备和软件资源抽象成“文件”,统一管理 但是大部分情况下的文件,都是指硬盘的文件(文件相当于是对“硬…...
【opencv入门教程】5. Mat 类用法
文章选自: 一、BackGround Mat对象是一种图像数据结构,它是一个容器,存储任何通道任何数的图片数据以及对应的矩阵,使用完成后,内存自动释放。二、Code void Samples::MatFunc() {1. 图像处理// 方法1:…...
SSM虾米音乐项目2--分页查询
1.分页查询的底层逻辑 首先根据用户输入的流派,进行模糊查询根据查询的数据进行分页需要前端用户提供pageNo(当前页数)和pageSize(每页的数据量)并且要从后端计算count(总数据量)和totalPage(总页数),以及startNum(每页开始的记录)从而将对应的页面数据…...
nodejs 获取本地局域网 ip 扫描本地端口
因为傻逼老板的垃圾需求,不得不成长 示例代码: 获取本地局域网 ip 地址: 需要注意的是:如果存在虚拟机网络,则返回的是虚拟机网络的 ipv4 地址 import os from os; export const getLocalIp () > {const in…...
区块链签名种类
1. eth_sign 简介:最早实现的签名方法,用于对任意数据进行签名。签名内容:直接对原始消息的哈希值进行签名。特点: 安全性较低,因为签名的消息没有明确的上下文或结构。很容易被滥用,攻击者可以伪造签名内…...
【062B】基于51单片机无线病房呼叫系统(+时间)【Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统NRF24L01无线模块DS1302时钟芯片LCD1602液晶显示按键设置蜂鸣器LED灯。 1、本设计采用STC89C51/52、AT89C51/52、AT89S51/52作为主控芯片,采用LCD1602液晶显示呼叫信息,系统共有两个板子(一个接…...
突破空间限制!从2D到3D:北大等开源Lift3D,助力精准具身智能操作!
文章链接:https://arxiv.org/pdf/2411.18623 项目链接:https://lift3d-web.github.io/ 亮点直击 提出了Lift3D,通过系统地提升隐式和显式的3D机器人表示,提升2D基础模型,构建一个3D操作策略。 对于隐式3D机器人表示&a…...
【pyspark学习从入门到精通24】机器学习库_7
目录 聚类 在出生数据集中寻找簇 主题挖掘 回归 聚类 聚类是机器学习中另一个重要的部分:在现实世界中,我们并不总是有目标特征的奢侈条件,因此我们需要回归到无监督学习的范式,在那里我们尝试在数据中发现模式。 在出生数据…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...


