力扣9(java)-回文数(简单)

题目:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

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

例如,121 是回文,而 123 不是。
 

示例 1:

输入:x = 121
输出:true
示例 2:

输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

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

提示:

-231 <= x <= 231 - 1
 

进阶:你能不将整数转为字符串来解决这个问题吗?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、运用数学思维

1.如果是负数,不是回文数,返回false;

2.如果是正数,把当前数的倒序数算出来(例如:123-->321),如果倒序数与当前数相等则说明是回文数(比如:121--> 121)返回true,不等则返回false;

代码:

 

二、数学方法进阶

1.首先如果为负数,肯定不是回文数,直接返回false;

2.0本身就是回文数,如果末尾数字为0(10的倍数,10,20,30....),则首个数字一定要为0(即为0本身)才会为回文,所以写成:x != 0 && x /10 ==0 这样直接返回false;

3.将整数进行反转,反转后的数字与原数字相同则是回文数,在反转时只用反转一半就可以判断是否为回文了。数字长度为偶数时,最终只需要判断 cur == x,数字长度为奇数时,最终通过 cur / 10去除掉中间的那一位,在与x进行判断是否相等即可。

 代码:

 

posted on 2022-06-24 22:17  我不想一直当菜鸟  阅读(69)  评论(0编辑  收藏  举报