【LC_Lesson3】---回文数的判别
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 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】---回文数的判别的更多相关文章
- 用javascript来判别回文数
什么是回文数?通俗的说就是正着读和倒着读都一样的字符串(即使是数字也是可以看成字符串的). 所以下面回文数都是用字符串来表示的,即判断回文数就是对字符串的判断. 举几个回文数的例子: i love u ...
- hdu1282回文数猜想
Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...
- C语言 · 特殊回文数
问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- luogu1207双重回文数[usaco1.2]Dual Palindromes
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上 ...
- luogu10125回文数[noip1999 Day1 T1]
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- 洛谷 P1015 回文数 Label:续命模拟QAQ
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- 回文数 第N个回文数
判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...
随机推荐
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- 基于 Laravel-Admin 在十分钟内搭建起功能齐全的后台模板
http://laravelacademy.org/post/6468.html 1.简介 为 Laravel 提供后台模板的项目越来越多,学院君已陆续为大家介绍过Laravel Angular Ad ...
- Bishops Alliance—— 最大上升子序列
原题链接:http://codeforces.com/gym/101147/problem/F 题意:n*n的棋盘,给m个主教的坐标及其私有距离p,以及常数C,求位于同一对角线上满足条件:dist(i ...
- 【9001】Internet消息发布
Time Limit: 1 second Memory Limit: 256 MB 问题描述 设Internet上有N个站点,通常从一个站点发送消息给其他N-1个站点,需依次发送N-1次.这样从一个站 ...
- jieba—parallel
jieba 并行处理进行测试,注意:并行分词仅支持默认分词器 jieba.dt 和 jieba.posseg.dt import sys import time import jieba jieba. ...
- 2019-8-31-dotnet-Framework-源代码-·-Ink
title author date CreateTime categories dotnet Framework 源代码 · Ink lindexi 2019-08-31 16:55:58 +0800 ...
- vue中的时间修饰符stop,self
stop阻止自身以外的冒泡 self只会阻止自身冒泡
- Java 工程师应该掌握的知识
以 Java 工程师应该掌握的知识为例,按重要程度排出六个梯度: 第一梯度:计算机组成原理.数据结构和算法.网络通信原理.操作系统原理. 第二梯度:Java 基础.JVM 内存模型和 GC 算法.JV ...
- 019.MFC_两种对话框
对话框分为模态和非模态对话框两种 模态对话框(Modal) d.DoModal() 必须关闭才能返回主窗口 非模态对话框(Modaless) p->Create(IDD_DIALOG,this) ...
- 在Linux中执行.sh脚本,异常/bin/sh^M
在Linux中执行.sh脚本,异常/bin/sh^M 在linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分 ...