精华内容
下载资源
问答
  • 判断一个整数是否是回文 将整数转换字符串,判断字符串是否是回文 public boolean isPalindrome1(int x) { //把整数转换字符串 String string = String.valueOf(x); int l = string.length(); //比对 ...

    判断一个整数是否是回文数

    1. 将整数转换为字符串,判断字符串是否是回文
    public boolean isPalindrome1(int x) {
        //把整数转换为字符串
    	String string = String.valueOf(x);
    	int l = string.length();
    	//比对
    	for(int i=0;i<(l/2);i++) {
    	    //偶数个数字时比较到前半段最后一个数字,奇数时不比较最中间的数字,所以l/2正好
    		if (!(string.charAt(i)==string.charAt(l-1-i))) {
    			return false;
    		}
    	}
    	return true;    
    }
    或者直接将字符串reverse,比较两个字符串是否相同,不过该方法耗时多,占空间大 用时14ms 内存:37.1m
    public boolean isPalindrome2(int x) {
    	//反转函数
    	String reversedStr = (new StringBuilder(x + "")).reverse().toString();//String类型没有reverse函数
    	return (x + "").equals(reversedStr);
    }
    
    1. 数学解法
    • 原理:n位正整数x,div = 10^(n-1),例如x=1221,div=1000
    x/div=首位数字 1221/1000=1 取整
    x%10=末尾数字  1221%10=1   取余
    
    public boolean isPalindrome3(int x) {
    		if (x<0) {//负数一定不是回文
    			return false;
    		}
    		//获取x的位数
    		int div = 1;
    		while((x/div)>=10) {
    			div*=10;
    		}//计算div
    		while(x>0) {//当最后剩下的x是0时不用继续比较了
    			int left = x/div;
    			int right = x%10;
    			if (left!=right) {//比较首位和末位
    				return false;
    			}
    			x = (x % div) / 10;//取除去首位和最后一位数字的新x
    			//x%div去掉了首位,再/10去掉了末位(既去掉了末位数字也去掉了位数)
    			//x = ((x-div*left)-right)/10; 先去掉位数和首位,再去掉末位数字,最后/10去掉末位位数
    			div/=100;
    		}
    		return true;
    	}
    
    1. 取出后半段数字进行翻转

    回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。

    循环取出x末位数字y,x/10为剩下的数,把y按队列的形式放到取出数中,当剩余的x小于或等于取出数时,表明取出一半或过半。
    整数:负数不能是回文,末位是0也不能是回文
    
    用时:9ms 内存:36m
    if (x<0 || x!=0&&(x%10)==0) return false;//如果末位是0,取出末位0放到取出数中相当于没取
    int revert = 0;
    while(x>revert) {
    	int y = x%10;//x末位数字
    	revert = revert*10 + y;//添加到revert末尾
    	x/=10;
    }
    if (x==revert) {
    	return true;//x是偶数位,取出数应该和剩余数相等
    }else if (x<revert && revert/10==x) {
    	return true;//x是奇数位,取出数应该是包含中间位的,所以%10,去掉中间位再进行比较
    }
    return false;
    

    复杂度分析

    • 时间复杂度:对于每次迭代,我们会将输入除以10,因此时间复杂度为对数级
    • 空间复杂度:O(1)
    展开全文
  • 题目描述: 判断一个整数是否是回文数。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 输出测试用例: 输入: 121 输出: true 输入: -121 输出: false ...x是10的倍数也不是回文数

    题目描述:

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

    输出测试用例:

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

    思路分析

    (1)判断参数的合法性;根据测试用例可以发现:
    负数一定不是回文数;
    x等于0也不是回文数;
    x是10的倍数也不是回文数(是10的倍数末尾一定是0,但是反过来最高位不可能为0)
    (2)121%10=1;
    	1*0+1=1;设置一个ret作为判断的标志
    	121/10=12;
    	12%10=2;
    	1*10+2=12;
    	12/10=1;(这里X已经小于ret,然后判断一下ret/10和x的关系,如果相等就返回true)
    	这是奇数的情况;
    

    代码如下:

    import java.util.Scanner;
    
    
    public class Solution3 {
        public static boolean isPalindrome(int x) {
            if (x <0 || x%10==0 && x!=0){
                return false;
            }
            int ret = 0;
            while(x > ret){
                ret = ret*10+x%10;
                x = x/10;
            }
            return true;
        }
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int x = scanner.nextInt();
            System.out.println(isPalindrome(x));
        }
    }
    
    
    展开全文
  • 如:输入整数 X = 1 2 0 0 0 1;... 再比较此字符串是否为回文串; #include<stdio.h> void isPalindrome(int x){ int p,i=0,j=0,k,flag=1; int a[10];//字符串数组 if(x<0)//若<0,如...

    :输入整数   X = 1 2 0 0 0 1;

    1. 将其转换为字符串:S = “ 1 2 0 0 0 1 ”;

    2. 再比较此字符串是否为回文串;

     

    #include<stdio.h>
    void isPalindrome(int x){
    int p,i=0,j=0,k,flag=1;
    int a[10];//字符串数组
    if(x<0)//若数<0,如-121,其反过来321-,则不是回文数,返回false
        printf("false\n");
    //若数>0,按如下操作继续执行
    else
    {
        while(x>0)//x=0时,跳出循环
       {
        a[i]=x%10;//将余数放置数组中
        x=x/10;//将x的商赋给x
        i++;
       } 
       k=i;//k存储数组a的个数
       while(j<k/2&&flag)//flag=0标志其不是回文串,则终止循环,flag=1,继续循环
      {
        if(a[j]==a[k-j-1])//若队首==队尾
            j++;//则继续遍历队首后一位数?=队尾前一位数
        else
            flag=0;//若!=,则终止
      }
       if(j<k/2)//若终止循环后,j<k/2,则返回false
             printf("false\n");
       else
             printf("true\n");//否则,返回ture
      }
    }
    int main()
    {
        int x;
        while(1)
        {
            printf("输入整数:\n");
            scanf("%d",&x);
            printf("是否是回文数?:\n");
            isPalindrome(x);
        }
        return 0;
    }
    

     

     

    展开全文
  • /*一个五位数,判断是否为回文数*/ #include <stdio.h> int main() { long x; int ge,shi,qian,wan; printf("请输入一个五位数:\n"); scanf("%ld",&x); if(x>10000&&x<100000) { ...
    /*一个五位数,判断其是否为回文数*/
    #include <stdio.h>
    int main()
    {
    	long x;
    	int ge,shi,qian,wan;
    	printf("请输入一个五位数:\n");
    	scanf("%ld",&x);
    	if(x>10000&&x<100000)
    	{
    		ge = x%10;
    		shi = x/10%10;
    		qian = x/1000%10;
    		wan = x/10000;
    		if(ge==wan&&shi==qian)
    		{
    			printf("该数是一个回文数!\n");		
    		}else{
    			printf("该数不是一个回文数!\n");	
    		}	 
    	}else{
    		printf("输入的数据不是一个五位数!\n");
    		exit(1);
    	} 
    }
    
    展开全文
  • 给定一个数,它的逆序输出的值等于它本身,则称为回文数,例如:12321、5665、0~9都属于回文数。 方法一:逆序输出后与原值比较是否相等,注意用int来保存逆序值可能会超出整形范围 bool isPalindrome(int x) { if...
  • 9.判断是否为回文数

    2019-05-21 23:15:37
    9.回文判断,如下图 转化字符串的方法比较简单就不用了,下面说个不用类型转化的方法 class Solution(): def isPalindrome(self,x): if x<0: return False a=x b=0 while(a!=0): b*=10 ...
  • 判断一个整数是否为回文数,不能用额外空间。回文数比如:12321, 1331, 1001. class Solution { public: bool isPalindrome(int x) { if (x ) { return false; } if (x == 0)
  • c#中如何判断是否为回文数

    千次阅读 2019-06-04 22:36:05
    Console.WriteLine(“请输入一段字符”); string c = Console.ReadLine(); //数组的索引是从0开始的,所以长度减去一 //这个是获取总的索引长度的 ...for (x = 0, y = len - x; x <= (len + 1) / 2; +...
  • 将整数转为字符串,然后将字符串分割为数组,只需要循环数组的一半长度进行判断对应元素是否相等即可。 class Solution: def isPalindrome(self, x: int) -> bool: if x<0: return False else: strx = ...
  • 题目意思:判断是否为回文数,不许使用额外空间  ps:一直不理解额外空间的意思,int能用吗 思路:1.比较头尾  2.翻转,越界问题需考虑 1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4...
  • java 回文判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数。public boolean isPalindrome(int x) {if (x < 0) {return false;}if (x>0 && x<10) {return...
  • #include<stdio.h> void main() { int n, m, x = 0; printf("请输入一个正整数:\n"); scanf("%d", &n); m = n; while (n>0) { x = x * 10 + n % 10; n = n / 10; ...
  • 【C语言】判断一个数是否为回文数

    千次阅读 2015-04-03 14:54:50
    //判断一个数是否为回文 #include int fun(int x) { int i,j=0; int a[10]; for(i=0;x!=0;i++) //把整形转到数组中 { a[i]=x%10; x=x/10; j++; } for(i=0;i;i++) //输出看转的是否正确 { printf...
  • 如题:Determine whether an integer is a palindrome. Do this without extra space. 自己虽然也写出了能得到正确结果的答案,但看到大神写的后,就无颜贴自己繁琐的东西了。... if (x|| (x!=0 && x%10=
  • 题目要求: 代码: class Solution: def isPalindrome(self, x: int) ->... x=str(x)#将整数转为字符串 if x==x[::-1]:#右边是后面开始逐个比较 return True else: return False 结果展示: ...
  • 郑州大学——徐峰 类: public class Homework09 { void test3 (int a){ int t,i,x=0,y; y=a; for(i=1;i<... } if(x==y){ System.out.println("该是回文"); }else{ Syst...
  • 从键盘上输入任意的正整数,编程判断该数是否为回文数。 所谓的回文数就是从左到右读这个数与从右到左读这个数是一样的。 例如,12321 , 4004都是回文数。 */#include #define N 10void main() { int n,x,m,i,k...
  • 题目9. 回文数描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。...判断字符串的i和strX.length() - 1 - i位是否相同,一旦不同则不是回文数;默认x...
  • 本文实例讲述了Python实现判断一个整数是否为回文算法。分享给大家供大家参考,具体如下:第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较def isPalindrome(self, x):""":type x: int:rtype:...
  • 判断整形回文数

    2019-10-09 00:49:45
    判断一个整数是否为回文数: 1、负数不是回文数 2、个位数一定是回文数 3、12321、6666、11等类似这样的数是回文数 下面是我写的代码: public boolean isPalindrome(int x) { if(x < 0){ return ...
  • 将一个完全反转后再比较可能会溢出,所以其实只要把后半部分反转即可,很容易得到数字后面的数字,怎么判断转换一半了,当原始数字小于反转时就说明转换一半了。但要注意的是可能是奇数位数的数字,所以判断的...
  • 判断一个数是否为回文数。 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数 判断一个数是否为回文数,只...
  • 遍历到中间位置,如果第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] != ...
  • 判断回文数

    2015-04-12 23:54:00
    空间复杂度O(1)的条件下,如何判断一个数是否回文。 【方法1】最好的方法如下,可以避免溢出的风险 public class Solution { public boolean isPalindrome(int x) { if (x < 0 || (x != 0 && x...
  • python三种方式判断回文数

    千次阅读 2020-05-09 21:40:59
    若将n的各位数字反向排列所得自然数n1与n相等,则称n回文数。例如,若n=1234321,则称n回文数;但若n=1234567,则n不是回文数。 解题思路 一、将输入的数字转换字符串 1.利用字符串中的pop()方法【双向...
  • 判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, -121 。 从右向左读, 121- 。...
  • js判断回文数

    2020-03-11 18:28:19
    判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, -121 。 从右向左读, 121- ...
  • 题目:判断一个整数是否是回文。回文是指正序(从左向右)和倒序(从右向左)读都是一样的整数 示例: 1、输入: 121 输出: true 2、输入: -121 输出: false 解释: 从左向右读, -121 。 从右向左读, 121...
  • 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false ... 0 时,x 不是回文数。同样地,如果数

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 209
精华内容 83
关键字:

判断x是否为回文数