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

本篇博客会讲解力扣"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即可。

c 复制代码
int maximum69Number (int num){
    int pos = 0; // 记录从右往左第几位,假设最低位是第0位
    int max = -1; // 记录最高位的6是从右往左第几位
    int ret = num;
    // 取出num的每一位,找出最高位的6
    while (num)
    {
        if (num % 10 == 6)
        {
            max = pos;
        }

        num /= 10;
        ++pos;
    }

    // 把最高位的6转换成9
    if (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函数,把字符串重新转换成整数,并返回。
c 复制代码
int maximum69Number(int num) {
	char ch[6];
	// 把整数转换成字符串
	sprintf(ch, "%d", num);

	// 找到字符串中的第一个6,并改成9
	char* 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函数查找字符串中的字符。

感谢大家的阅读!

相关推荐
十月的皮皮30 分钟前
C语言学习笔记20260606- 求月份天数三种写法
c语言·笔记·学习
huangdong_1 小时前
1688商品图片采集技术解析:登录态处理与SKU图自动分类
开发语言
youngerwang1 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
chase_my_dream1 小时前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试
KaMeidebaby1 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy6181 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
caimouse1 小时前
Reactos 第 5 章 进程与线程 — 5.8 Windows 的 APC 机制
c语言·windows
天佑木枫2 小时前
15天Python入门系列 · 序
开发语言·python
手写码匠2 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
无限码力3 小时前
阿里算法岗 0530笔试真题 - 多约束条件下的元素匹配统计
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试