1, 题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121输出: true
示例 2:
输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2, 算法
1, 逆序数
第一步, 排除负数第二步, 求逆序数第三步, 比较
object Solution {def isPalindrome(x: Int): Boolean = {if (x < 0) {return false}val x_rev = reverse_order(x)return x_rev == x}def reverse_order(x: Int): Int = {var a = xval queue = scala.collection.mutable.Queue[Int]()while (a != 0) {queue.enqueue(a % 10)a /= 10}var p = 0while (queue.nonEmpty) {p = p * 10 + queue.dequeue()}p}}
#python 实现
class Solution:
def isPalindrome(self, x: int) -> bool:
x_orignal=x
if x < 0:
return False
import queue
q = queue.Queue()
while x != 0:
q.put(x % 10)
x = x // 10
x_rev = 0
while not q.empty():
x_rev = x_rev * 10 + q.get()
return x_orignal == x_rev
