精华内容
下载资源
问答
  • 判断一个整数是否回文数

    千次阅读 2017-01-19 16:53:39
    问题 判定一个正整数是否是一个回文数。例如12121是回文数,而1231不是回文数。回文数定义为可以以中间某个数字对称,或者间隔对称,例如123321,或者...这种方法不仅可以判断一个数是否为回文数,还可以判断文本字

    问题

    判定一个正整数是否是一个回文数。例如12121是回文数,而1231不是回文数。回文数定义为可以以中间某个数字对称,或者间隔对称,例如123321,或者1234321。详细的回文数介绍请参考维基百科:http://en.wikipedia.org/wiki/Palindromic_number


      解法1:转换成字符串
    这种方法不仅可以判断一个数是否为回文数,还可以判断文本字符串是否是回文的。




    解法2:数字翻转


    将整数翻转,之后比较,若跟原来的数相等,就是回文数字 ,//若1234321,倒转之后数字为1234321,相等,就是回文数字.


    解法3:逐位判断


    即逐个的从高位到中间位,每次取位上的单个数字进行比较,首先确定数值的位数n,然后依次比较(n,1),(n-1,2)....

    展开全文
  • java 回文判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数。public boolean isPalindrome(int x) {if (x < 0) {return false;}if (x>0 && x<10) {return...

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

    public boolean isPalindrome(int x) {

    if (x < 0) {

    return false;

    }

    if (x>0 && x<10) {

    return true;

    }

    int inputValue = x;

    //模长

    int mold = 10;

    //整数的长度

    int ilength = 1;

    int input = x;

    while (true) {

    input = input / mold;

    if (input == 0) {

    break;

    }

    ilength++;

    }

    //反转结果

    int revert = 0;

    //反转步长

    int step = 1;

    while (true) {

    int m= 1; //除数

    for (int g=ilength-1;g>0;g--){

    m = m * 10;

    }

    //整数

    int i = x / m;

    //余数

    int j = x % m;

    revert = i*step + revert;

    x = j;

    step = step * 10;

    ilength--;

    if (j == 0) {

    break;

    }

    }

    return revert==inputValue;

    }

    展开全文
  • 判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。...

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

    示例 1:

    输入: 121
    输出: true
    示例 2:

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

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

    进阶:

    你能不将整数转为字符串来解决这个问题吗?

    思路一:

    1. 先看第二个输入,如果输入的是个负数,固定返回false,所以可以先进性x的判断是否小于0;
    2. 对整数进行一个按位反转,反转思路是,循环从个位数开始,每次对10取余,这样依次取个位,然后取十位,再取百位,值运算时10的倍数+每次的上一次值。
    3. 因为是个整数,所以要判断反转后是否是int的最大值和最小值区间,超出,返回false。

    java:

    class Solution {
        public boolean isPalindrome(int x) {
            if(x < 0){
                return false;
            }
            int temp = x;
            long result = 0;
            while (temp != 0) {
                result = result * 10 + temp % 10;
                temp = temp / 10;
            }
            if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
                return false;
            } else {
                return x == result;
            }
        }
    }
    

    在这里插入图片描述

    kotlin:

    class Solution {
        fun isPalindrome(x: Int): Boolean {
            if (x < 0) {
                return false
            }
            var temp = x
            var result: Long = 0
            while (temp != 0) {
                result = result * 10 + temp % 10
                temp = temp / 10
            }
            return if (result > Int.MAX_VALUE || result < Int.MIN_VALUE) {
                false
            } else {
                x.toLong() == result
            }
        }
    }
    

    在这里插入图片描述

    思路二

    1. 先判断是否小于0,小于0返回false
    2. 将整数x转换为字符串,然后通过stringBuilder或者stringBuffer的 reverse()方法来进行反转
    3. 再计较字符串的value
       fun isPalindrome(x: Int): Boolean {
           if (x < 0) {
                return false
            }
            val strX = x.toString()
            val str: String = StringBuilder(strX).reverse().toString()
            return str == strX
        }
    }
    

    思路三

    1. 先判断是否小于0,小于0返回false
    2. 然后转为string,再转为字符数组
    3. 然后定义头尾指针,然后进行low和high索引位置的值得比较
    fun isPalindrome1(x: Int): Boolean {
                if (x < 0) {
                    return false
                }
                val strX = x.toString()
                val cArray: CharArray = strX.toCharArray()
    
                var low = 0
                var high = cArray.size - 1
    
                while (low <= high) {
                    if (cArray[low] != cArray[high]) {
                        return false
                    }
                    high--
                    low++
                }
    
                return true
            }
    }
    

    在这里插入图片描述

    加油

    展开全文
  • 判断一个整数是否回文数

    千次阅读 2019-01-23 11:44:32
    为了大家更好了解,在看回文数之前我们先来看一个这样的问题: 从键盘输入任意一个整数,编程计算这个正整数每一位数字相加之和。例如输入1234,先分离出1,2,3,4,然后再计算1+2+3+4=10,并输出10。 我们...

         首先什么是回文数呢?所谓回文数就是从左往右读和从右往左读是一样的,比如1221,222等等。

         为了大家更好了解,在看回文数之前我们先来看一个这样的问题:

         从键盘输入任意一个正整数,编程计算这个正整数每一位数字相加之和。例如输入1234,先分离出1,2,3,4,然后再计算1+2+3+4=10,并输出10。

    我们首先想的肯定是如何把这个整数的每个数字都分离出来,那么怎么分离呢?对给定已知长度的整数的分离想必大家都会,但是从键盘输入任意整数的分离呢?这就得用循环来做啦。

    #include <stdio.h>
    int main()
    {
        int n;
        int sum=0;
        int temp;
        scanf("%d", &n);//从键盘读入一个正整数
        while(n!=0){
            temp=n%10;//先把n的个位分离放在temp里面
            sum+=temp;//把分离出来的那一位加进去
            n/=10;//因为n的最小的那一位已经加进去了,所以n除以十,把最小的那一位去掉,再进行新的循环
        }
        printf("%d",sum);
        return 0;
    }
    

    循环结束条件为什么是n=0呢?大家想想n/=10是不是只有当n只剩下一个数的时候,而在n/=10;之前已经把它分离出来加到sum里了,所以这时候可以退出循环了,大家可以把1234代进循环里走一遍试试。

     

    现在我们初步了解了如何分离任意正整数的各位数字就可以来写判断回文数的代码了。

    代码如下:

    #include <stdio.h>
    int main()
    {
        int n,sum=0,b;
        scanf("%d", &n);
        int temp=n;//因为循环需要对n的值进行改变,但是后面还要用到n的值,所以这里把赋值给一个中间变量
        while(temp!=0){
            b=temp%10;//分离出n的最低位
            sum=sum*10+b;//通过分离出的每一位进行叠加,循环结束后可以得到一个从右往左读的数,即倒置的数
            temp/=10;
        }
        if(sum==n)//通过倒置的数和原来的数对比大小,若相等则是回文数,输出YES
            printf("YES");
        else
            printf("NO");
        return 0;
    }
    

     

    展开全文
  • 本文实例讲述了Python实现判断一个整数是否为回文算法。分享给大家供大家参考,具体如下:第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较def isPalindrome(self, x):""":type x: int:rtype:...
  • 这是本次课程的第一次博客,所以就选了一个比较简单的回文数...为了判断回文数,我们只需要判断一个整数某些数位上的数字是否相等即可 比如说对于一个长度为length的整数,那么只需要用一个循环遍历length/2个长度 ...
  • 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数,如果是回文数则输出YES,否则输 python def main(s): s = str(s) if s == s[::-1]: print('YES') else: print('NO'...
  • 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。问题分析要会判断用户输入的是几位数,并将每一位数分解出来程序可以利用取整和取余的方法进行判断例子:假设a为5位数,...
  • 遍历到中间位置,如果第i和第size-i-1不相等,将不为回文数,反之,为回文数 bool isPalindrome(int x) { string strX = to_string(x); for (int i = 0; i < strX.size() / 2; i++) if (strX[i] != ...
  • 【问题描述】输入一个整数判断是否回文数!回文数是不论从左向右顺读,还是从右向左倒读,结果都是一样的,例如151,15351. 【输入形式】从键盘输入一个整数 【输出形式】判断是否回文数 【样例输入】 151 ...
  • 函数判断某个整数是否为回文数,如12321为回文数。将整数逆序后形成另整数,判断个整数是否相等来实现的。 int IsEchoNum(int num) {  int tmp = 0;  for(int n = num; n; n/=10)  tmp = tmp *10 + n%10...
  • 从键盘输入一个整数判断是否回文数。所谓回文数是顺读和反读都一样的数,如12321,23455432都是回文数。 #include"Stdio.h"#include"Conio.h"intmain(void){inti,k;longn,m;intdigit[10];clrscr();puts(...
  • 1.不能用额外的空间,不能转化为string在判断。 2.如果反转数字记得判断范围。 解题思路 1.反转数字在计算 AC代码(java) package test; class Solution { public boolean ...
  • 一种方法是先翻转当前,然后把它和原比较(略)另一种是递归方法,借用一个复制,对原递归,使之翻转,然后配合复制比较package recursion; public class Check_if_a_number_is_palindrome { public ...
  • 问题描述:判断一个整数是否回文数
  • 回文数(或迴文數)是指一个像14641这样“对称”的数,即:将这...要判断一个整数是否是回文数,最自然的想法是把整数转换成一个字符串,然后根据回文的对称特性进行判断。数字转换为字符串可以通过itoa函数实现,判断...
  • 判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1:         输入: 121         输出: true 示例 2:     &...
  • 判断一个整数是否是回文,最自然的想法是把整数转换成一个字符串,然后根据回文的对称特性进行判断。数字转换为字符串可以通过itoa函数实现,判断字符串是否为回文字符串代码如下: bool isPalindrome(string...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 883
精华内容 353
关键字:

判断一个整数是否回文数