-
2021-01-12 01:27:41
回文数的定义:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例1:
输入:121
输出:True
示例2:
输入:-121
输出:False
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
思路:
映入脑海的第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。
第二个想法是将数字本身反转,但是这样做有一个风险,32位机器的int类型最大值为2147483647,反转后的数字可能超出范围造成溢出。
按照第二个想法,为了避免数字反转可能导致的溢出问题,为什么不考虑只反转 int\text{int}int 数字的一半?毕竟,如果该数字是回文,其后半部分反转后应该与原始数字的前半部分相同。
例如,输入 1221,我们可以将数字“1221”的后半部分从“21”反转为“12”,并将其与前半部分“12”进行比较,因为二者相同,我们得知数字 1221 是回文。
算法:
首先我们要处理一些特殊情况,负数不可能是回文数,首先要禁止负数进入。
然后再考虑如何反转数字,例如1221,首先1221%10就可以得到最后一位数字1,然后将1221/10得到122,再次122%10得到倒数第二位数字2,最后用1*10+2=12就得到了我们反转后的数字12,用12和原数字的前两位对比即可判断该数字是不是回文数。
还存在一个问题:我们怎么知道自己反转了一半呢?
我们将原始数字除以 10,然后给反转后的数字乘上 10,所以,当原始数字小于反转后的数字时,就意味着我们已经处理了一半位数的数字。
代码实现:
Python
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x<0 or (x % 10 == 0 and x != 0):
return False
y=0
while(x>y):
y=x%10+y*10
x /= 10;
return x==y or x==y/10
Java
class Solution {
public boolean isPalindrome(int x) {
if(x < 0 || (x % 10 == 0 && x != 0))
return false;
int res = 0;
while(x > res){
res = res * 10 + x % 10;
x /= 10;
}
return x == res || x == res / 10;
}
}
更多相关内容 -
Python实现判断一个整数是否为回文数算法示例
2020-09-19 13:47:10主要介绍了Python实现判断一个整数是否为回文数算法,结合实例形式分析了Python针对字符串的翻转、判断等相关操作技巧,需要的朋友可以参考下 -
C#递归实现回文判断算法
2020-12-25 17:45:16本文实例讲述了C#递归实现回文判断算法,分享给大家供大家参考。具体实现方法如下: 代码如下:static void Main(string[] args) { DateTime dt1 = DateTime.Now; string text = “abcdedcba”; bool bYes = ... -
JS使用栈判断给定字符串是否是回文算法示例
2020-12-12 20:51:52本文实例讲述了JS使用栈判断给定字符串是否是回文算法。分享给大家供大家参考,具体如下: /*使用栈stack类的实现*/ function stack() { this.dataStore = [];//保存栈内元素,初始化为一个空数组 this.top = 0;/... -
对python判断是否回文数的实例详解
2020-12-31 12:51:42设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回...#判断回文数 def hw(n): p=n k=0 while p!=0: k=k*10+p p= -
回文数算法
2021-03-06 04:02:161、回文数:一种数字,如:12321, 这个数字正读是12321,倒读也是...回文数判别算法(java实现)import java.io.BufferedReader;import java.io.InputStreamReader;public class HuiWenShu {public static void ma...1、回文数:一种数字,如:12321, 这个数字正读是12321,倒读也是12321,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。
回文数判别算法(java实现)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HuiWenShu {
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please input texts:");
String inputString=br.readLine();
int input = Integer.parseInt(inputString);
checkHWS(input);
}
//判断一个数是否为回文数
public static void checkHWS(int input){
int reverse = 0,temp = input;
while(temp>0){
reverse = reverse*10+temp%10;
temp = temp/10;
}
if(input==reverse)System.out.println(input+"是回文数!");
else System.out.println(input+"不是回文数!");
}
2、平方回数:一个回文数,它同时还是某一个数的平方,这样的数字叫做平方回数。例如:121。
算法要求:求出规定范围内的所有平方回数(java实现)import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HuiWenShu {
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please input start:");
String startString=br.readLine();
int start = Integer.parseInt(startString);
System.out.print("Please input end:");
String endString=br.readLine();
int end = Integer.parseInt(endString);
getAllHWS(start,end);
}
//判断一个数是否为回文数
public static boolean checkHWS(int input){
int reverse = 0,temp = input;
while(temp>0){
reverse = reverse*10+temp%10;
temp = temp/10;
}
if(input==reverse)return true;
else return false;
}
//输出给定范围内的,所有平方回数
public static void getAllHWS(int start,int end){
double extractionOfStart = Math.sqrt(start);
int startTemp = (int) Math.ceil(extractionOfStart);
double extractionOfEnd = Math.sqrt(end);
int endTemp = (int) Math.floor(extractionOfEnd);
for(int i = startTemp;i<=endTemp;i++){
int temp = i*i;
boolean flag = checkHWS(temp);
if(flag)System.out.println(temp);
}
}
}
-
回文数判断两种算法详解
2020-12-03 12:34:59判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数,如果是回文数则输出YES,否则输出NO。 这里我用了两种方法: ①采用的是判断前后对应位置数值相等 def main( s ): n = ...判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数,如果是回文数则输出YES,否则输出NO。
这里我用了两种方法:①采用的是判断前后对应位置数值相等
def main( s ): n = len(s) if n % 2 == 0: #判断输入的数奇数个还是偶数个 m = n//2 for i in range(m-1): if s[i] == s[(n-1) - i]: continue else: print("NO") break else: print("YES") else: a = n//2 for i in range(a): if s[i] == s[(n-1)-i]: continue else: print("NO") break else: print("YES") s = input("请输入一个回文数:") main(s)
②是采用将输入数字倒序输出后判断是否与原来相等
n =input("请输入一个整数:") m = int(n) temp = m num = 0 while temp>0: num = num*10 + temp%10 #产生用户数输入的数的倒序数,temp%10是取最后一位数 temp //= 10 #删除已经取过的的最后一位数 if num == m: print("YES") else: print("NO")
-
判断是否是回文数字(Java)
2021-11-26 21:06:20判断是否是回文数字 (牛客网—牛客题霸算法篇—NC56) 题目描述 在不使用额外的内存空间的条件下判断一个整数是否是回文。 回文指逆序和正序完全相同 默认负数不是回文数 思路 Java实现 如果考虑将数字转化为字符串...判断是否是回文数字
(牛客网—牛客题霸算法篇—NC56)
题目描述
在不使用额外的内存空间的条件下判断一个整数是否是回文。
回文指逆序和正序完全相同
默认负数不是回文数思路
Java实现
如果考虑将数字转化为字符串的话,需要使用额外空间的限制考虑将整数翻转,但要注意溢出的情况,具体处理见反转数字
代码实现
import java.util.*; public class Solution { /** * * @param x int整型 * @return bool布尔型 */ public int reverse (int x) { // write code here long y=0;//防止溢出 while(x!=0){ y=y*10+x%10; x=x/10; } return (int)y==y?(int)y:0; } public boolean isPalindrome (int x) { // write code here if(x==0) return true; if(x<0) return false; int y=reverse(x); if(x==y) return true; return false; } }
-
判断回文数的简便算法
2017-08-19 01:20:16回文数定义 ...本文提出的判断回文数的简便算法是基于int且不需要完整遍历这个数一次。其思路为:假设需要判断的数为x,用一个名为back的数储存x后半段的数并且翻转,最后再比较x与back是否相等即可。 -
详解判断回文字符串和回文数算法的C语言代码!
2021-05-20 01:25:16一、判断一个字符串是否为回文字符串#include #include #include //包含strlen#define YES 1#define NO 0#define uchar unsigned char#define uint unsigned int#define ushort unsigned short#define ulong ... -
Python3实现的判断回文链表算法示例
2020-09-19 13:34:59主要介绍了Python3实现的判断回文链表算法,结合实例形式分析了Python3针对链表是否为回文链表进行判断的相关算法实现技巧,需要的朋友可以参考下 -
算法判断一个数是否是回文数
2019-12-06 18:12:00判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121... -
Python3实现的回文数判断及罗马数字转整数算法示例
2020-09-19 12:22:30主要介绍了Python3实现的回文数判断及罗马数字转整数算法,涉及Python数值运算、转换等相关操作技巧,需要的朋友可以参考下 -
Java代码判断是否是回文数
2020-05-09 21:30:06然后再将得到的每一位末位数*10+新得到的余数来构成新数,判断新数与要判断的数大小是否一致,如果一致,则此数为回文数。 用实例解释: 判断a=121是否为为回文数: num_num=0.....初始化新数为0 -
Java算法——判断一个数是否是回文数
2021-03-25 10:48:24https://blog.csdn.net/beyond1123/article/details/52176240?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control //回文数...如:98789, 这个数字正读是98789,倒读也是98789 //正读倒读一样,所以这个数字就是回文数 import java.util.Scanner; public class HuiWenShu { public static void main(String[] args) { Scanner sc ... -
回文数算法分析
2019-03-07 09:26:14判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 ... -
算法|回文数判断
2019-08-14 06:49:22题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数 示例1: 输入:121 输出:true 示例2: 输入:10 输出:false 示例3: 输入:-121 输出:false 代码: class ... -
python简单算法04:判断一个字符串是否为回文串的排列之一
2020-12-22 09:19:49给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语,排列是指字母重新排列,回文串不一定是字典中的单词。 例如: 输入:“tactcoa” 输出:True(排列有... -
Python实现判断一个整数是否为回文数算法示例,
2021-01-14 02:32:27Python实现判断一个整数是否为回文数算法示例,本文实例讲述了Python实现判断一个整数是否为回文数算法。分享给大家供大家参考,具体如下:第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较def ... -
用java判断一个数是否是回文数(代码算法对C#、C++也适用)
2021-08-23 22:42:14用java判断一个数是否是回文数 基本算法思想: “所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。 以下是判断一个数是否为回文数的代码: 大致思路就是将一个数反着排列一遍,如果和... -
判断一个数是否是回文数
2021-08-04 10:48:57题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;...回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 1 -
【算法】Python判断数字是否是回文数
2020-02-26 10:58:19回文数的定义: 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例1: 输入:121 输出:True 示例2: 输入:-121 输出:False 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是... -
经典判断是否为回文数算法
2018-03-27 22:04:07思路:将回文数颠倒后与原来的数字相同即为回文数,例如 1221 颠倒后依然为 1221,即1221为回文数C++代码bool Symmetry (long n) { long i,temp; i=n; temp=0; while(i) //不用出现长度问题,将数按高低位掉换 {... -
java实现回文数算法
2022-03-29 21:24:59编写函数int loop(int x),判断一个整数是否为回文数,如果x是回文数则返回1,否则返回0。编写程序loop.c,接收控制台输入的两个整数a,b。调用loop函数输出a到b之间(包括a和b)的所有回文数 【输入形式】控制台... -
回文数算法(C和java)
2021-03-06 04:02:18最小回文数是1。思路:许多朋友(包括我自己)一开始就思考使用循环:从1开始,判断该数是否是回文数,然后用一个计数器记下回文数,一直到计数器得到N,返回第N个回文数。比较常用的是以下这种方法来判断是否回文数:...