判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true

示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

一. 题目分析

根据题目的要求,有两种解法:

1. 将数据转换为字符串,然后从首尾方向开始判别每个字符是否相等

2. 分析回文数的数学特性,进行判断

  1) 负数因为负号的存在 一定不是回文数

  2) 如果正数为回文数,则每一位数据反转之后,最终的数值应该和原值相等,这点其实又和前一篇介绍的整数反转联系到了一起。

二. 代码实现

c++实现

 bool Solution::IsPalindrome(int num)
{
long long ans = ;
int temp = num;
if (temp < )
{
printf("%d is not a Palindrome\n",num);
return false;
}
while (temp)
{
int pop = temp % ;
ans = ans* + pop;
temp = temp / ;
}
if (ans != num)
{
printf("%d is not a Palindrome\n",num);
return false;
}
printf("%d is a Palindrome\n",num);
return true;
}

经验贴士:

  1. 在上传leetcode实现时,有被提示,数据溢出。可能是因为某些数据反转之后,会发生溢出的状况,由于我们默认输入的数据为int型,因此反转之后数据我们使用long long型来存储这个反转结果,以避免溢出发出,进而实现我们前后数据的比较,代码可执行通过

  2. 在发生数据反转的时候,一定要把溢出考虑在内,否则你的程序执行是会报错的,这是绝对不允许的。

python实现:

 class Solution():
def IsPalindrome(num:int) -> bool:
if num < 0:
print("%d not a Palindrome" % num)
return False
ans = 0
temp = num
while temp:
pop = temp%10
ans = ans*10 + pop
temp = temp//10
print (ans)
if num!=ans:
print("%d is not a Palindrome" % num)
return False
print("%d is a Palindrome" % num)
return True Solution.IsPalindrome(121)

经验贴士:

  1.  在python实现的过程中,更多的参考了之前整数反转的解法,整体不难

												

【LC_Lesson3】---回文数的判别的更多相关文章

  1. 用javascript来判别回文数

    什么是回文数?通俗的说就是正着读和倒着读都一样的字符串(即使是数字也是可以看成字符串的). 所以下面回文数都是用字符串来表示的,即判断回文数就是对字符串的判断. 举几个回文数的例子: i love u ...

  2. hdu1282回文数猜想

    Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...

  3. C语言 · 特殊回文数

    问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

  4. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  5. luogu1207双重回文数[usaco1.2]Dual Palindromes

    题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上 ...

  6. luogu10125回文数[noip1999 Day1 T1]

    题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  7. 洛谷 P1015 回文数 Label:续命模拟QAQ

    题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  8. 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟

    Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. 回文数 第N个回文数

    判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...

随机推荐

  1. 【a403】遍历树问题

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历, ...

  2. linux主次编号

    字符设备通过文件系统中的名子来存取. 那些名子称为文件系统的特殊文件, 或者设备文 件, 或者文件系统的简单结点; 惯例上它们位于 /dev 目录. 字符驱动的特殊文件由使用 ls -l 的输出的第一 ...

  3. js 键盘事件keyCode 总结

    开发中经常页面中的某些按钮或元素需要绑定到键盘的输入事件 keydown.keyup 事件 keydown 键盘按下触发事件 $("#btn").keydown(function( ...

  4. 用nodejs创建服务器显示html页面

    nodejs版本:v10.14.2 1.首先准备一个简单的html页面 <!DOCTYPE html> <html lang="en"> <head& ...

  5. 2019-11-17-dotnet-core-使用-GBK-编码

    title author date CreateTime categories dotnet core 使用 GBK 编码 lindexi 2019-11-17 16:36:27 +0800 2019 ...

  6. H3C配置热键--hotkey---系统视图

    Hotkey作用 hotkey 命令用来为某一快捷键指定相应的命令行. undo hotkey 命令用来恢复系统的默认值. —————————————————————————————————————— ...

  7. 【33.18%】【hdu 5877】Weak Pair (3种解法)

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submissi ...

  8. 2018.11.30 浪在ACM 集训队第七次测试赛

    https://blog.csdn.net/StilllFantasy/article/details/84670643 感谢刘凯同学 https://blog.csdn.net/UnKfrozen/ ...

  9. linux_jdk,zookeeper,kafka安装

    若是在虚拟机安装最好先进行下面的安装 1.1修改各个虚拟机主机名 vi /etc/sysconfig/network 1.2修改主机名和IP的映射关系 vi /etc/hosts 1.3关闭防火墙 # ...

  10. PHP四大主流框架的优缺点总结

    本篇文章我们来讲讲PHP四大框架的优缺点都有哪些,让你们在开发中更好的去选择使用哪款PHP框架去完成项目,废话不多说,我们一起来看看吧!! ThinkPHP ThinkPHP(FCS)是一个轻量级的中 ...