• c语言练习70:反转两次的数字


    反转两次的数字

    题⽬描述: 反转 ⼀个整数意味着倒置它的所有位。

    例如,反转 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 <= 10^6

    解法⼀(直接模拟):

    模拟反转过程。

    算法思路:

    1. 对原数字进⾏两次反转;

    2. 判断反转前后是否发⽣变化。

    3. 反转前的值与反转后的值相等则返回 ture ,否则返回 false 。

    1. #include
    2. bool isSameAfterReversals(int num)
    3. {
    4. int n = num;
    5. int m = 0;
    6. //将n反转后的值放⼊m
    7. while (n)
    8. {
    9. m = m * 10 + n % 10;
    10. n = n / 10;
    11. }
    12. //跳出循环表⽰n=0,不需要重新赋0
    13. //将m反转后的值放⼊n
    14. while (m)
    15. {
    16. n = n * 10 + m % 10;
    17. m = m / 10;
    18. }
    19. //判断两次反转后的值是否等于原数字
    20. return n == num;
    21. }

    解法⼆(数学): 反转后发⽣变化的情况只有反转后存在前导零的情况。第⼆次反转⼀定没有前导零,因为第⼆次反转 的最⾼位与原数字的最⾼位相等,原数字的最⾼位⼀定不是0,所以我们只需要判断第⼀次反转是否 含有前导零,即可判断两次反转后是否发⽣变化。

    前导零

    算法思路:

    1. 判断原数字本⾝是否为0,或者个位数是否不为0;

    2. 若两个条件都满⾜则返回 true ,否则返回 false 。

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

    c语言bool类型

     

  • 相关阅读:
    使用jmx_exporter监控Kafka
    解读服装行业生命周期
    Python中CAN通讯学习
    [react基础]关于v6版本route的变化,以及常见应用模式
    string(讲解)
    【web-攻击验证机制】(3.4.1)保障验证机制的安全:使用可靠的证书、安全处理证书、正确确认证书、防止信息泄露
    本、硕、博区别真的辣么大吗?
    浅析量化交易程序化的优势
    【Linux常见指令1】
    基于springboot大学校园防疫与服务系统毕业设计源码111556
  • 原文地址:https://blog.csdn.net/2301_77479435/article/details/133417676