Leetcode 回文数字判断

一、问题描述

判断一个integer 型的数字是否是回文,空间复杂度应该是常数级别的 。

二、问题分析

  首先,负数不是回文,10的整数倍不会是回文,个位数一定是回文。

三、代码实现

思路:将一个数字翻转,即最高位变成最低位,最低位变成最高位,然后比较输入的字符和翻转之后的字符。

 1 class Solution {
 2     bool isPalindrome(int x)
 3     {
 4         if( x < 0 || (x%10 == 0 && x != 0))
 5         {
 6             return false;
 7         }
 8
 9         int i = x; // 将 x 保存起来
10         int reveredNum = 0; // 保存翻转之后的数字
11         while (x != 0)
12         {
13             reveredNum = reveredNum* 10 + x % 10;1
14              x /= 10;
15         }
16
17         return i == reveredNum ;
18     }
19 } 

原文地址:https://www.cnblogs.com/wangxiaoyong/p/8647189.html

时间: 2024-11-11 18:31:50

Leetcode 回文数字判断的相关文章

回文数字判断

/** * 回文数字判断 * * @param num * @since 0.0.1 */ public void huiwen(String num){ Integer temp = (num.length())/2 ; System.out.println(temp); boolean flag = true; for (int i = 0; i < num.length(); i++) { if (temp > 0) { if (i >= temp) { break; } } Sy

LeetCode 9 Palindrome Number(回文数字判断)

Long Time No See ! 题目链接https://leetcode.com/problems/palindrome-number/?tab=Description 首先确定该数字的位数.按照已知数字x对10进行多次求余运算,可以得到数字位数. 具体思路: 1.每次取出该数字的最高位和最低位进行比较. 2.如果不相等则直接返回FALSE, 3.如果相等修改x的值(去掉最高位也同时去掉最低位)其中去掉最高位可以通过求模运算,去掉最低位可以采用除以10 4.进行循环直到x的值不大于0为止

Palindrome-Number(判断回文数字)

判断一个数是否为回文数字,如1,2,3,121,1001,999都是回文数字,10,9898就不是回文数字. 解法:判断对称中心两端数字是否相同. 代码如下: bool isPalindrome(int x) { if (x<0 || (x != 0 && x % 10 == 0)) return false; int sum = 0; while (x>sum) { sum = sum * 10 + x % 10; x = x / 10; } return (x == sum

判断一个数字是否是回文数字,如果是则打印出100以内的回文数字,若不是只给出提示信息。

回文数字指的是什么呢?什么是回文数字呢? 回文数字的特征是:一组数字,从左读和从右读都是一样的,比如:123.123321.12345654321 public class HuiWenTest{    public static void main(String[] args)    {        Scanner sc = new Scanner(System.in); try        {            System.out.println("请输入你要判断的数字: &quo

[LeetCode] Palindrome Number 验证回文数字

Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. Some hints: Could negative integers be palindromes? (ie, -1) If you are thinking of converting the integer to string, note the restriction of using ext

LeetCode—Palindrome Number 数字是否是回文数字

Determine whether an integer is a palindrome. Do this without extra space. 检测当前数字是否是回文数字,同时不能增加额外的内存空间,这里一个注意的点就是 负数 都不可能是回文数字 然后是检测出来每一位数字进行比较 代码还是写得比较繁琐,主要的一个点就是数字的位数是基数位和偶数位的时候处理的过程是不同的 class Solution { public: int GetH(int x,int num)//获得对应位置的数字 {

1503140110-蓝桥杯-历届试题 回文数字

历届试题 回文数字 时间限制:1.0s   内存限制:256.0MB 问题描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的.这样的数字叫做:回文数字. 本题要求你找到一些5位或6位的十进制数字.满足如下要求: 该数字的各个数位之和等于输入的整数. 输入格式 一个正整数 n (10<n<100), 表示要求满足的数位和. 输出格式 若干行,每行包含一个满足要求的5位或6位整数. 数字按从小到大的顺序排列. 如果没有满足条件的,输出:-1 样例

条件结构的实例-水仙花数、猜拳游戏、回文数字

1.判断输入的数是否为水仙花数 int num,ge,shi,bai,he;  //声明变量 printf("请输入三位数");  //由用户输入一个三位数 scanf("%d",&num);   //将用户输入的数字保存给num //用户输入的数=个位的三次方+ 十位数的三次方+ 百位数的三次方 //1.从num获取个位 ge=num%10; //2.从num获取十位 shi=num/10%10; //3.从num获取百位 bai=num/100; he=

Java 简单算法--打印回文数字

package cn.magicdu.algorithm; public class CircleNumber { public static void main(String[] args) { for(int i=10;i<10000;i++){ if(isCircleNumber(i)){ System.out.println(i); } } } /** * 判断是否是回文数字 * @param num * @return */ private static boolean isCircl