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

Rust面试宝典第2题:逆序输出整数

题目

        写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。

解析

        这道题本身并没有什么难度,主要考察应聘者全面思考问题的能力。假如我们是一个测试工程师,应当如何编写这道题的测试用例呢?下面给出了一些测试用例,可供应聘者参考。

        1、整数为0时,输出为:“0”。

        2、整数为6时,输出为:“6”。

        3、整数为365时,输出为:“563”。

        4、整数为1200时,输出为:“21”。

        5、整数为1002时,输出为:“2001”。

        6、整数为100200时,输出为:“2001”。

        7、整数为-6时,输出为:“-6”。

        8、整数为-365时,输出为:“-563”。

        9、整数为-1200时,输出为:“-21”。

        10、整数为-1002时,输出为:“-2001”。

        11、整数为-100200时,输出为:“-2001”。

        本题的解题思路为:首先,判断整数为正数还是负数,如果为负数,则直接输出负号,并取其绝对值。然后,依次取出个位、十位、百位上的数字,判断是否为0,如果为0,则跳过,直到找到不是0的数字,再输出该数字。后续再遇到数字为0时,需要输出0,不能跳过。

        下面,我们给出了这道题的示例代码。

fn output_reverse(num: i32) {if num == 0 {println!("0");return;}let is_negative = num < 0;if is_negative {print!("-");}let num = if is_negative { -num } else { num };let mut prefix_zero = true;let mut temp_num = num;while temp_num > 0 {let digit = temp_num % 10;if digit != 0 || !prefix_zero {if prefix_zero {prefix_zero = false;}print!("{}", digit);}temp_num /= 10;}println!();
}fn main() {output_reverse(0);output_reverse(6);output_reverse(365);output_reverse(1200);output_reverse(1002);output_reverse(100200);output_reverse(-6);output_reverse(-365);output_reverse(-1200);output_reverse(-1002);output_reverse(-100200);
}

        在上面的示例代码中,我们首先对0这种特殊情况进行了处理,直接原样输出0。对于负数,我们会输出负号,然后取其相反数。然后,我们对temp_num进行取余操作,得到每一位上的数字digit,并对temp_num除以10,一直到temp_num为0时为止。在遍历每一位上的数字前,我们记录了一个变量prefix_zero,默认为true。当digit为0且prefix_zero为true时,不输出0,其他情况下,则都需要输出digit。当digit不为0时,会将prefix_zero设置为false。

总结

        通过这道题,我们学会了如何更全面、更仔细地思考问题。严谨是一个软件开发工程师的必备素质,我们在平时的编程过程中,就应当养成严谨的好习惯。

        另外,我们还为你留了一些课后的拓展作业,快来试一试吧!

        1、有两个字符串s和t,请编写一个方法,查找字符串t在字符串s中出现的最左边的位置;如果在s中没有与t匹配的子串,则返回-1。

http://www.lryc.cn/news/339626.html

相关文章:

  • Linux笔记之查看docker容器目录映射
  • ​​​​网络编程探索系列之——广播原理剖析
  • jar包解压和重新打包
  • Python基于Django的微博热搜、微博舆论可视化系统
  • Flink SQL:debezium-json 格式的表一定是数据库的 CDC 数据吗?
  • 基于STM32的RFID智能门锁系统
  • 测试用例的编写评审
  • 二叉树的前、中、后序遍历【c++】
  • Hadoop HDFS:海量数据的存储解决方案
  • Leetcode二十三题:合并K个升序链表【22/1000 python】
  • 03-echarts如何画立体柱状图
  • 2024蓝桥A组E题
  • Java单例模式
  • 04—常用方法和正则表达式
  • Python异常处理机制详解及示例
  • 解决:Java后端返回给前端的Date格式数据相差8小时的问题
  • linux安装weblogic
  • Unity WebGL Release-Notes
  • Excel 记录单 快速录入数据
  • go 利用channel实现定时任务
  • JWT介绍
  • 如何实现YOLOv8保存目标检测后的视频文件
  • LlamaIndex 组件 - Prompts
  • Github 2024-04-16Python开源项目日报 Top10
  • ElasticSearch nested 字段多关键字搜索,高亮全部匹配关键字的处理
  • python_31-32
  • 关于机器学习/深度学习的一些事-答知乎问(四)
  • [spring] Spring Boot REST API - 项目实现
  • ELK之Filebeat实用配置及批量部署(部署200+可用)
  • 用odin实现的资源复制编辑器