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

P1537 数字反转(升级版)详解

这个题目还是对于新手比较锻炼思维严谨性的,我认为是在我做过的一些题目中,此题算上等马

先看题目

我先说明我自己的思路,以及这个题目你需要特别注意的地方

1,数字反转,①可用<algorithm>库里面的reverse函数反转字符串

                        ②可用for循环从后往前循环输出

2,此题我自己重新定义了一个reverse函数,起到的作用为删除反转后数字前面为零的情况,另一个函数起辅助作用,我知道你看文字难懂的,我先给你解释反转里的难点

3,举个例子:①一个满足题目的 890% 这个数字,正常反转后为 098%,但是题目要求数字前面不能以0开头,除非这个数字就是 0%,就可用以 0开头,或者说 000%时,也只保留一个0。

②在小数时,比如 1200.00300 为你输入的小数,此时题目要求你反转,但此时你需要注意,他的后面  .00300 的后面两个0是不是要先删去,后面的两个0完全没有意义,反转后反而会占前面位置,不符合题意,再着,反转后 为  .300 仍然需要删去后面多余的0 ,此时就跟我重新定义了两个函数有关系了,只有小数有第二种情况,其他没有,至于为什么,仔细看题目

以下是我的代码:

delf( ) 函数名 取自delete forward 意思为:从前面删除0

delb() 函数取自 delete back 意思为:删除后面的0

substr() 包左不包右 你可能好奇 第一个参数为起始位置,第二个参数为提取个数,但为何第二个为find('%'),找这个符号的下标干嘛,此时,我举例子 一个数  320%,里面每个对应下标为 0123,总共四个字符,find('%')会返回3,此时substr(0,find('%'))即是 substr(0,3),从0开始提前3个字符,最终会提取的为 320 ,所有正确

若里面只有一个参数,则定义的为起始索引,终点默认,其为最后

总结:find()返回某个字符位置索引,则说明其这个字符前面有多少位,有多少个字符,因为索引从0开始,索引比字符位数少1

小数先反转,调用delf(),原本 320.00330变成,23.3300,此时注意,只有小数会出现反转后,后面为0,因为一个整数或者小数里小数点前面的数,开头的数都是有意义的数,不以0开头,所有反转后结尾不为0,只有小数点后面会出现此情况,此时需要调用delb(),substr()会从前往后提取,舍去结尾为0情况

http://www.xdnf.cn/news/272017.html

相关文章:

  • 【C++语法】类和对象(3)
  • 蟋蟀的叫声,大自然的温度计
  • PyTorch学习之张量(Tensor)(一)
  • 【Mytais系列】Datasource模块:数据源连接
  • MCP 探索:browser tools MCP + Cursor 可以实现哪些能力
  • VBA 64位API声明语句第009讲
  • 2025深圳杯(东三省)数学建模竞赛D题完整分析论文(共36页)(含模型、可运行代码、数据结果)
  • (超2万字数详解)C++学习之类与对象
  • SwiftUI-MLX本地大模型开发(二)
  • 射频指标互调与交调简略
  • ubuntu使用apt安装软件
  • python中的yield关键字用法
  • 数据赋能(209)——质量管理——时效性原则
  • 文献分享:抗体治疗癌症综述
  • EMMC存储性能测试方法
  • FramePack部署(从PyCharm解释器创建和使用开始)保姆级教程
  • 基于SpringBoot的篮球竞赛预约平台设计与实现
  • 数据赋能(210)——质量管理——可靠性原则
  • FastAPI系列13:API的安全防护
  • 经典算法 最小生成树(prim算法)
  • QT6 源(70):阅读与注释按钮类 QPushButton,及各种属性验证,
  • 返回倒数第k个节点题解
  • 学习黑客分析案例
  • 山东大学计算机组成与设计第九、十章习题解析
  • 延时启动windows中程序
  • C++Primerplus编程练习 第五章
  • 继V1.5之后,幻方又发布了 DeepSeek-Prover-V2-671B,参数提升100倍
  • 【AI平台】n8n入门6:调用MCP服务(非社区节点)
  • 构建灵活的配置管理系统:YAML 与 TOML 的应用与热更新实践
  • 生成树、Prime、Kruskal