回文数算式(回文数-力扣)
导读:回文数-力扣 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/palindrome-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...
回文数-力扣
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/palindrome-number 著作权归领扣网络所有 。商业转载请联系官方授权 ,非商业转载请注明出处 。
题目描述
给你一个整数 x ,如果 x 是一个回文整数 ,返回 true ;否则 ,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数 。
例如 ,121 是回文 ,而 123 不是 。
思路
首先应确定 ,负数必定不是回文数 。 任何一个以0结尾的数(不包括0)必定不是回文数 ,例10 ,110 ,30 。 其次 ,如果该数(x)数字位数为奇数 ,那么该数处于最中间位数的数无需进行判断 x若对10取余,则可以求出最后一位数 ,x除以10 ,则可以去掉最后一位数,如此循环 ,则可以将每个数求出 。 那么我们的思路就显而易见了 ,先设置负数与以0结尾的数返回值为false ,接着对其他的数进行判断 ,设置一个中间量temp ,对x进行取余操作的结果进行接收 ,后续的接收便是temp*10再加上x/10再取余的结果 。对上述操作进行循环直至x<=temp即可 。 这里需要强调的是 ,由于x一直在进行x/10操作 ,而temp一直在接收x去掉的数 ,所以循环结束后应注意对x数字个数分情况判断 。若x位偶数则直接判断是否相等即可 ,x为奇数则应对中间量temp进行除以十的操作 ,以去掉中间的那个数 ,再进行判断代码
class Solution { public boolean isPalindrome(int x) { if(x < 0 || x%10 ==0 && x != 0) return false; int temp = 0; while(x > temp){ temp = x % 10 + temp * 10; x /= 10; } return x == temp || x == temp / 10; } }提交截图
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!