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

示例 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. vue+element-ui 字体自适应不同屏幕

    项目背景:屏幕自适应问题,当在不同分辨率的屏幕上显示页面时,页面的字体需要根据屏幕大小来自适应,想到使用rem作为字体的单位 vue-cli脚手架下的index.html中写入以下js脚本 <s ...

  2. codeforce 380(div.2)

    A B 略 C:二分,贪心 设d(i, v)为 剩余油量为v时,车开距离i 所需要的最小时间,使用线性规划不难算出: if v < i return INF; //无法到达 if v > ...

  3. 2018-10-19-jekyll-添加-Valine-评论

    title author date CreateTime categories jekyll 添加 Valine 评论 lindexi 2018-10-19 09:10:40 +0800 2018-2 ...

  4. Curator源码阅读 - ConnectionState的管理与监听

    看看Curator框架 为实现对 连接状态ConnectionState的监听,都是怎么构造框架的.后面我们也可以应用到业务的各种监听中. Curator2.13实现 接口 Listener List ...

  5. Jenkins安装部署与使用

    一.Jenkins平台安装部署 Jenkins官网免费获取Jenkins软件,官网地址为:http://mirrors.jenkins-ci.org/下载稳定的Jenkins版本.由于Jenkins是 ...

  6. C# 实现多线程

    1.System.Threading命名空间 System.Threading命名空间提供了使得可以多线程编程的类和接口   其中 (1)Thread类构成了C#多线程编程的支柱,他用于创建并控制线程 ...

  7. boostrap-非常好用但是容易让人忽略的地方【5】:input-group-btn

    1.正常的使用 <div class="form-group"> <div class="input-group"> <input ...

  8. Android应用框架中的四个核心要点

    Android应用框架中的四个核心要点:活动(Activity).消息(Intent).视图(View).任务(Task) (一)活动Activity Android系统内部有专门的Activity堆 ...

  9. 在windows+nginx的curl操作请求超时的问题

    之前的项目在apache下进行本地curl操作的时候请求不会超时 后来要在nginx下开发的时候,我在项目中写一个curl操作的test.php文件,请求相同项目下的一个index.php文件,然后c ...

  10. C语言中的符号总结

    1.注释符号                     //和/* ...*/ 2.续行符号                      \ 3.转义符号                     常用:\ ...