Leetcode-9. 回文数
2020-03-15 18:23
1436 查看
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
题解思路
可以通过之前的一道整数反转来做。如果将x全部反转。就要考虑溢出的问题。看了解答发现可以用反转一半。比较x的前一半和。反转的后一半是否相等。
怎么判断反转了一半?
通过x /10 与 反转数reverseNum*10 进行比较,如果 前者小于后者,就说明反转了一半了。 再比较得到的x与reverseNum是否相等。同时如果x是奇数位数,例如12321,那么x/10不断执行后,x为12 reverseNum为123.就必须让reverseNum%10与x进行比较
class Solution { public boolean isPalindrome(int x) { //对x分别求出首位和个位。 只要有一个不相等就返回false int temp=0; int rev= 0; if(x<0 || x%10 == 0 && x !=0){ return false; } int reverseNum=0; while(x > reverseNum){ //进行反转 //反转一半就行。 原始数字除以10,与反转后的数*10进行比较,如果后者大于前者 。就说明 将原始数反转了一半了。 //原始数反转一半就可以不需要考虑溢出的问题。 reverseNum = reverseNum* 10 + x%10; x =x/10; } //如果x是有奇数位数, 比如12321 通过上面的反转 x = 12 reverseNum=123, 所以需要考虑x是否等于reverseNum/10; //最后还要考虑10 1000 1000 300这些情况。 return x==reverseNum || x== reverseNum/10; } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- [LeetCode]—Palindrome Partitioning II 回文分割,求最小分割数
- (LeetCode)Palindrome Number -- 判断回文数
- leetcode题目 寻找最长回文字串
- LeetCode Palindrome Linked List (回文链表)
- LeetCode:Longest Palindromic Substring 最长回文子串
- 求最长回文子串 - leetcode 5. Longest Palindromic Substring
- LeetCode 234: Palindrome Linked List (回文链表)
- LeetCode刷题之回文数 java
- leetcode 9 给一个int类型的数字,判断是否是回文数
- Leetcode 9 Palindrome Number 回文数
- leetcode第五题—最长回文字符串
- LeetCode Longest Palindromic Substring(最长回文子串)
- leetcode 回文链表
- Leetcode9.回文数
- LeetCode:234. Palindrome Linked List 回文链表 Java
- 【LeetCode004-005算法/编程练习C++】--两个数组的中间数,找出最长回文子串
- [LeetCode] Palindrome Pairs 回文对
- LeetCode 最长回文字串
- LeetCode 214. Shortest Palindrome(最短回文)
- leetcode 最长回文子串