判断整形回文数

 2023-09-10 阅读 18 评论 0

摘要:题意: 判断一个整数是否为回文数: 1、负数不是回文数 2、个位数一定是回文数 3、12321、6666、11等类似这样的数是回文数 下面是我写的代码: public boolean isPalindrome(int x) {if(x < 0){return false;}else if(x<10){return true;}int a=

题意:

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

1、负数不是回文数

2、个位数一定是回文数

3、12321、6666、11等类似这样的数是回文数

下面是我写的代码:

 public boolean isPalindrome(int x) {if(x < 0){return false;}else if(x<10){return true;}int a=10,b=10;while(x/a > 9) a *= 10;if(x/a != x%b){return false;}else{a = a/10;b = b*10;while(a >= b){int temp1 = (x%(a*10))/a;int temp2 = (x/(b/10))%10;if(temp1 != temp2)return false;a = a/10;b = b*10; }}return true;}

思路:

1 首先判断是否是正数

2 判断是否是个位数

3 根据算数特性,逐个提出对应位比较是否相等,一旦有不想等马上返回false,如果执行完成还没有不同,就在结尾返回true。

leetcode讨论区方法:

public boolean isPalindrome(int x) {if (x<0 || (x!=0 && x%10==0)) return false;int rev = 0;while (x>rev){rev = rev*10 + x%10;x = x/10;}return (x==rev || x==rev/10);
}

此方法利用回文数的特性:

1 设置一个数为rev=0

2 判断输入数字x是否大于rev,如果大于则进入循环,否则跳出到第4步

3 令rev = rev*10 + x%10 且 x=x/10 , 进入下一个循环

4 如果x是回文数,那么此时的x=rev或者x=rev/10

转载于:https://www.cnblogs.com/K-artorias/p/7795870.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/32700.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息