当前位置: 首页 > 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情况

相关文章:

  • 【unity游戏开发入门到精通——UGUI】整体控制一个UGUI面板的淡入淡出——CanvasGroup画布组组件的使用
  • 深入探索 AAC 编码原理与 ADTS 格式:音频世界的智慧结晶
  • MCP多智能体消息传递机制(Message Passing Between Agents)
  • 注入内部Bean
  • 数据结构---
  • Scrapy框架之【settings.py文件】详解
  • Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析
  • Qwen3:快慢思考融合,一键启停
  • 【Vue】性能优化与调试技巧
  • ipvsadm,是一个什么工具?
  • MySQL 中日期相减的完整指南
  • 【赵渝强老师】TiDB生态圈组件
  • 如何优化MySQL主从复制的性能?
  • 130. 被围绕的区域
  • 使用DeepSeek协助恢复历史数据
  • 介绍一下HSLA的颜色相关知识
  • 一篇文章看懂时间同步服务
  • PyTorch_阿达玛积
  • AI 与生物技术的融合:开启精准医疗的新纪元
  • GTS-400 系列运动控制器板(十四)----软限位使用
  • 跳水世界杯总决赛陈佳获得女子3米板冠军,陈艺文获得亚军
  • 经济日报头版评论:矢志奋斗筑梦青春中国
  • 美国加州州长:加州继续对中国“敞开贸易大门”
  • 马克思主义理论研究教学名师系列访谈|薛念文:回应时代课题,才能彰显强大生命力
  • 美国多地爆发集会抗议特朗普政府多项政策
  • 跳水世界杯总决赛:程子龙/朱子锋夺男子双人10米台冠军