(37)反转两次的数字

文章目录

  • 每日一言
  • 题目
  • 解题思路
    • 法一:
    • 法二:
  • 代码
    • 法一:
    • 法二:
  • 结语


每日一言

为人务须振作精神。不可稍形颓丧。人生处世必有不如意之时。愈不得意,愈能振作,便不难人定胜天。——张元济


题目

题目链接:反转两次的数字

反转 一个整数意味着倒置它的所有位。

例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。
给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。

示例 1:

输入:num = 526
输出:true
解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。
示例 2:

输入:num = 1800
输出:false
解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。
示例 3:

输入:num = 0
输出:true
解释:反转 num 得到 0 ,接着反转 0 得到 0 ,等于 num 。

提示:

0 <= num <= 106


解题思路

法一:

这题很简单,我们之前做过类似的:求数字的每一位之和
只需要在拿原来数字的第一位时,让你的sum*10就OK了~

法二:

找规律,仔细观察题目,当num的个位为0且这个数不等于0时,num反转后一定不等于原数。
基于以上规律来写代码。

代码

法一:

int reverse(int x)
{
    int tmp = 0;
    while(x)
    {
        tmp = tmp*10 + x%10;
        x/=10;
    }
    return tmp;
}

bool isSameAfterReversals(int num) {
    return num==reverse(reverse(num));
}

法二:

bool isSameAfterReversals(int num) {
    return num%10!=0 || num == 0;
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


你可能感兴趣的:(你必须要会的C语言练习题,C语言,c语言,学习)