栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++实现对一个正整数的逆置(附图解,通俗易懂)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++实现对一个正整数的逆置(附图解,通俗易懂)

提示:文章食用前置条件:C++基本语法,略微的数学知识 即可


前言

        今天在刷力扣第九题(回文数)的时候,我的实现思路是将那个数字进行逆置,然后对逆置的数字与原本的数字进行比较,来判断回文数,因为回文数不是负数,所以这里只考虑正整数的逆置


代码如下:

#include 
using namespace std;

int inversion(int x)
{
        int fin = 0;  //此处fin是final的意思,随便定义的
        while(x)
        {
                fin = fin * 10 + x % 10;
                x /= 10;
        }
        return fin;
}

可能有人表示这样的代码难以看懂,那么接下来就以手绘图的形式来进行讲解

 比如这里输入的数字x为:12345,上图的流程图应该学过数学的都知道,这里得出的5,4,3,2,1就是对12345 % 10进行取模,然后问题来了,怎么把得出来的数字进行合并在一起呢?

 while(x)
        {
                fin = fin * 10 + x % 10;
                x /= 10;
        }

且留意看这里的代码,fin是定义的一个变量,是final的意思,这里每次循环一次就把得到的模加上去并且下一次循环对fin乘以10再进行下一次相加,我们来模拟一次循环:

第一次循环:fin = 0*10 + 5 = 5

第二次循环:fin = 5*10 + 4 = 54

第三次循环:fin = 54*10 + 3 = 543

第四次循环:fin = 543*10 + 2 = 5432

第五次循环:fin = 5432*10 + 1 = 54321

然后在第五次循环结束后x = 0为false,结束了循环,至此完成了对数字的逆置,inversion(逆置)的函数功能就此完成了。

改进之处:

上力扣提交代码的时候我也遇到问题了,因为一些比较大的数字会超出int的数据范围,因此如果是数据量过大的话,因使用long long来防止数据过大导致问题

代码如下:

#include 
using namespace std;

long long inversion(int x)
{
        long fin = 0;  
        while(x)
        {
                fin = fin * 10 + x % 10;
                x /= 10;
        }
        return fin;
}
为啥x不用long long呢?因为力扣官方给出的数据就是int x,当然各位在实际使用中可以根据实际情况改成long long(可能蓝桥杯之类的会用到吧)

最后希望这个案例能够帮助到大家去实现一些功能,本博主也是刚刚高中毕业啊,第一次写文章,做的不好的可以指出批评改正,然后上大学了有时间也会分享一些自己的心得,大家一起进步吧!!!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号