9.回文数-力扣(LeetCode)

题目:

解法一:

解题思路:

依据题意可知,负数不可能是一个回文数,那么我们判断的数范围就是非负数。这里定义了一个整型数组(由于提前知道传入数据的范围,所以数组大小定为10能够满足解题需求),然后拆分参数的各个位,并存入数组中。由回文数的定义:回文数正序(从左向右)和倒序(从右向左)读都是一样的整数。则参数若为回文数时,数组前后对应位置的数据应该是相同的,否则会出现不同。

代码:

cpp 复制代码
bool isPalindrome(int x)
{
    if(x < 0)
        return false;
    else
    {
        int ch[10] = {0};
        int *p = ch;
        int *q = ch;
        while(x)
        {
            *p = x%10;
            x = x/10;
            p++;
        }
        p--;
        while(p > q)
        {
            if(*p != *q)
                return false;
            p--;
            q++;
        }
        return true;
    }
}

解法二:

解题思路:

依据题意可知,负数不可能是一个回文数,那么我们判断的数范围就是非负数。由于这里判断的是回文数,而不是回文字符串,我们还可以利用如下方法实现判断。对于任意一个非负数来说,我们可以拆分出其各个位的值,并可以根据得到各个位的顺序还原出原数据。而对于一个回文数来说,我将每次拆分出来的最低位,当作对应位置的高位来进行还原数据的操作,得到的数据应该与原数据相等。

例:原数据:123,拆分:1 2 3,123 = 1*100+2*10+3,123 != 3*100+2*10+1。

原数据:1 21,拆分:1 2 1,1 21 = 1 *100+2*10+1,1 21 = 1*100+2*10+1

代码:

cpp 复制代码
bool isPalindrome(int x)
{
     if(x < 0)
        return false;
     else
     {
        long sum = 0;
        int t = x;
        while(x)
        {
            sum = 10*sum + x%10;
            x = x/10;
        }
        if(sum == t)
            return true;
        else 
            return false;
    }

}
相关推荐
8Qi85 小时前
LeetCode 213:打家劫舍 II(House Robber II)—— 题解 ✅
算法·leetcode·职场和发展·动态规划
Lsk_Smion6 小时前
力扣实训 _ [75].颜色分类 _ 杨辉三角
数据结构·算法·leetcode
8Qi88 小时前
LeetCode 1049:最后一块石头的重量 II —— 题解 ✅
算法·leetcode·职场和发展·动态规划·01背包
运筹vivo@11 小时前
LeetCode 2574. 左右元素和的差值
算法·leetcode·职场和发展·每日一题
一只齐刘海的猫12 小时前
【Leetcode】移动零
算法·leetcode·职场和发展
人道领域12 小时前
【LeetCode刷题日记】131.分割回文串,动态规划优化
java·开发语言·leetcode
Lsk_Smion14 小时前
力扣实训 _ [994].腐烂的橘子/图论
算法·leetcode·图论
8Qi815 小时前
LeetCode 337:打家劫舍 III(House Robber III)—— 题解 ✅
算法·leetcode·二叉树·动态规划
2601_9611940215 小时前
教资科三美术考什么|初中高中美术题型考点和模板资料
leetcode·elasticsearch·职场和发展·蓝桥杯·pat考试·lucene
8Qi816 小时前
LeetCode 121 & 122:股票买卖问题(DP 对比题解)✅
算法·leetcode·职场和发展·动态规划