【算法】【LeetCode】回文数
题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:你能不将整数转为字符串来解决这个问题吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
1 class Solution 2 { 3 public boolean isPalindrome(int x) 4 { 5 if(x < 0) 6 { 7 return false; 8 } 9 10 // 使用int来解 11 // 溢出问题分析:如果输入的数字太大,则有可能翻转后会超出int类型的最大值,计算时会溢出 12 // 但如果一个数子是回文数,那就代表翻转其存在且小于int类型的最大值,同样的翻转后的值由于和原值相同自然也不会溢出 13 // 所以也可以不考虑溢出的问题,如果溢出则代表不是回文数字同样的也会返回false 14 // 当然最好还是考虑一下,这样比较“合理” 15 int reverseNum = 0; 16 int x_ = x; 17 while(x > 0) 18 { 19 reverseNum = reverseNum * 10 + (x % 10); 20 x /= 10; 21 } 22 return x_ == reverseNum; 23 24 /* 25 // 使用字符串来解 26 String begin = String.valueOf(x); 27 String end = ""; 28 for(int i = begin.length()-1; i>-1;i--) 29 { 30 end += begin.charAt(i); 31 } 32 return begin.equals(end); 33 */ 34 } 35 }

浙公网安备 33010602011771号