【算法】【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 }

 

posted @ 2020-02-23 16:25  Suzi2019  阅读(118)  评论(0)    收藏  举报