探索极限:利用整数或字符串操作找出翻转后的最大数字

在这里插入图片描述

本篇博客会讲解力扣“1323. 6 和 9 组成的最大数字”的解题思路,这是题目链接。

在这里插入图片描述
对于这道题目,我会讲解2种解题思路,分别是直接操作整数,和利用字符串操作。希望大家通过本题学习关于整数和字符串的技巧。

显然,这道题要求我们找出一个整数最高位的6,并把这一位改成9。

思路1

对于一个整数,我们可以通过反复地“mod10除10”取出这个整数的每一位,比如:

1234 %10 = 4
1234 / 10 = 123
123 % 10 = 3
123 / 10 = 12
12 % 10 = 2
12 / 10 = 1
1 % 10 = 1
1 / 10 = 0

可以看到,通过反复地“mod10除10”,我们就把1234的每一位从右往左取出来了,即[4 3 2 1]。

我们可以从右往左把题目给我们的整数的每一位取出来,并且找到最高位的6,再把这一位改成9。具体的,我们需要用一个变量记录取出来的是从右往左的第几位,并维护一个变量max来记录最高位的6是第几位。

至于如何把最高位的6改成9也非常简单,比如,96996中最高位的6是从右往左的第3位(假设最右边那一位是第0位),我们只需要在这个整数的基础上加上3乘103,即3000即可。

int maximum69Number (int num){int pos = 0; // 记录从右往左第几位,假设最低位是第0位int max = -1; // 记录最高位的6是从右往左第几位int ret = num;// 取出num的每一位,找出最高位的6while (num){if (num % 10 == 6){max = pos;}num /= 10;++pos;}// 把最高位的6转换成9if (max != -1){ret += 3 * (int)pow(10, max);}return ret;
}

在这里插入图片描述

思路2

接下来讲解一个非常巧妙的解法,这需要运用字符串的相关知识。

首先我们需要了解到,我们可以使用sprintf函数把整数转换成字符串,也可以使用sscanf函数把字符串转换成整数。不了解这两个函数的朋友可以先阅读我的这篇博客。

我们还需要了解strchr函数,这个函数可以查找一个字符,如果找到了,就会返回最左边的这个字符的地址,否则返回NULL指针。

对于本题,我们可以进行如下操作:

  1. 使用sprintf函数,把题目给的整数转换成字符串。
  2. 使用strchr函数,找到这个字符串最左边的6。
  3. 把字符串最左边的6改成9。
  4. 使用sscanf函数,把字符串重新转换成整数,并返回。
int maximum69Number(int num) {char ch[6];// 把整数转换成字符串sprintf(ch, "%d", num);// 找到字符串中的第一个6,并改成9char* cp = strchr(ch, '6');if (cp){*cp = '9';}// 把字符串重新转换成整数int ret = 0;sscanf(ch, "%d", &ret);return ret;
}

在这里插入图片描述

总结

  1. 使用“mod10除10”的方法取出一个整数的每一位。
  2. 使用sprintf和sscanf把字符串和整数相互转换。
  3. 使用strchr函数查找字符串中的字符。

感谢大家的阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/33751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022深圳杯C题思路解析

题目描述: 继续更新 再更问题三 继续更新第一问、第四问 1.2 问题重述 在制定电动车调度方案时,必须考虑充、换电池的时间成本,从而提出了新 的车辆运输选址及调度问题。 1) 已知自动驾驶电动物料车在取料点 P 和卸货点 D …

243. 一个简单的整数问题2(树状数组)

输入样例: 10 5 1 2 3 4 5 6 7 8 9 10 Q 4 4 Q 1 10 Q 2 4 C 3 6 3 Q 2 4输出样例: 4 55 9 15 解析: 一般树状数组都是单点修改、区间查询或者单点查询、区间修改。这道题都是区间操作。 1. 区间修改用数组数组维护差分数组 2. 区间查询&am…

golang 自定义exporter - 服务连接数 portConnCount_exporter 导出器

需求: 1、计算当前6379 、3306 服务的连接数 2、可prometheus 语法查询 下面代码可直接使用: 注: 1、windows 与linux的区分 第38行代码 localAddr : fields[1] //windows为fields[1] , linux为fields[3] 2、如需求 增加/修改/删除…

程序猿成长之路之密码学篇-分组密码加密模式及IV(偏移量)的详解

Cipher.getInstance("AES/ECB/PKCS5Padding"); Cipher cipher Cipher.getInstance("AES/CBC/PKCS5Padding"); 在进行加解密编程的时候应该有很多小伙伴接触过以上的语句,但是大伙儿在编码过程中是否了解过ECB/CBC的含义、区别以及PKCS5Padding…

Selenium之css怎么实现元素定位?

世界上最远的距离大概就是明明看到一个页面元素站在那里,但是我却定位不到!! Selenium定位元素的方法有很多种,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大, 随着自动…

指针进阶大冒险:解锁C语言中的奇妙世界!

目录 引言 第一阶段:🔍 独特的字符指针 什么是字符指针? 字符指针的用途 演示:使用字符指针拷贝字符串 字符指针与字符串常量 小试牛刀 第二阶段:🎯 玩转指针数组 指针数组是什么? 指针…

[SpringBoot3]基础篇

二、SpringBoot基础篇 2.1什么是SpringBoot SpringBoot是目前流行的微服务框架,倡导“约定优于配置”,其目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能,比如自动化配置starter(启动器&a…

策略模式【Strategy Pattern】

刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题, 嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看…

http、https笔记

目录 HTTP 基本概念状态码:get和post的区别:http 常⻅字段:http的缺点: HTTP/1.1HTTP/3HTTPSHTTPS和HTTP区别对称加密和⾮对称加密⾮对称加密 HTTP 基本概念 状态码: 1xx 中间状态,比如post的continue 20…

【设计模式】抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象…

vim学习笔记(致敬vim作者)

vim cheat sheet 30. vim 删除大法 vim 删除某个字符之后改行的其他的字符?删除某行之后的其他行?删除某个字符之后的其他字符?【1】删除单个字符? 跳到要删除的字符位置 按下d键然后按下shift 4键 【2】删除某行之后的其他行…

【CheatSheet】Python、R、Julia数据科学编程极简入门

《Python、R、Julia数据科学编程极简入门》PDF版,是我和小伙伴一起整理的备忘清单,帮助大家10分钟快速入门数据科学编程。 另外,最近 TIOBE 公布了 2023 年 8 月的编程语言排行榜。 Julia 在本月榜单中实现历史性突破,成功跻身 …

构建之法 - 软件工程实践教学:一线教师的13问

福州大学单红老师的软工课程总结 2020春,不一样的学期不一样的软工实践 单红⽼师在总结中,提出了13条疑惑,《构建之法》的作者邹欣⽼师就单红⽼师提出的每⼀条疑惑,给出了⾃⼰的思考,与他进⾏探讨交流。欢迎你也来参与…

[保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现

题目链接&#xff1a; KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 描述 输入n个整数,依次输出每个数的约数的个数 输入描述&#xff1a; 输入的第一行为N&#xff0c;即数组的个数(N<1000) 接下来的1行包括N个整数&#xff0c;其中每个…

pytest fixture 高级使用

一、fixture中调用fixture 举例&#xff1a; 输出&#xff1a; 说明&#xff1a;登录fixture 作为参数传递到登出方法中&#xff0c;登录方法的返回值就可以被登出方法使用 二、在fixture中多参数的传递&#xff08;通过被调用函数传参&#xff09; 举例&#xff1a; 输出&a…

目标检测YOLOv3基于DarkNet53模型测试-笔记

目标检测YOLOv3基于DarkNet53模型测试-笔记 预测和试测结果&#xff1a; 预测代码如下所示&#xff1a; testInsects.py #YOLOv3网模型测试-单图片文件测试并显示测试结果 import time import os import paddle import numpy as np import cv2 import random from PIL impor…

【24择校指南】北方工业大学计算机考研考情分析

北方工业大学(B-) 考研难度&#xff08;☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分数人数统计&#xff09;、院校概况、23专业目录、23复试详情、23各科目和各专业考情分析。 正文1720字&#xff0c;预计阅读&#xff1a;5分钟。 2023考情概况…

竞赛项目 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

实现跨域的几种方式

原理 前后端的分离导致了跨域的产生 跨域的三要素&#xff1a;协议 域名 端口 三者有一个不同即产生跨域 例如&#xff1a; http://www.csdn.com https://www.csdn.com 由于协议不同&#xff0c;端口不同而产生跨域 注&#xff1a;http的默认端口80&#xff0c;https的默…

Android应用开发(37)LTPO帧率测试基于Surfaceview(暂存)

Android应用开发学习笔记——目录索引 参考android官网&#xff1a; Frame rate | Android media | Android Developers多重刷新率 | Android 开源项目 | Android Open Source ProjectWindowManager.LayoutParams | Android Developers 目前市面上旗舰手机基本都是…