LeetCode:回文数

Posted Ariel_一只猫的旅行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:回文数相关的知识,希望对你有一定的参考价值。

Easy!

题目描述:

判断一个整数是否是回文数。不能使用辅助空间。

一些提示:

负整数可以是回文数吗?(例如 -1)

如果你打算把整数转为字符串,请注意不允许使用辅助空间的限制。

你也可以考虑将数字颠倒。但是如果你已经解决了 “颠倒整数” 问题的话,就会注意到颠倒整数时可能会发生溢出。你怎么来解决这个问题呢?

本题有一种比较通用的解决方式。

解题思路:

这道验证回文数字的题不能使用额外空间,意味着不能把整数变成字符,然后来验证回文字符串。而是直接对整数进行操作,我们可以利用取整和取余来获得我们想要的数字,比如 1221 这个数字,如果 计算 1221 / 1000, 则可得首位1, 如果 1221 % 10, 则可得到末尾1,进行比较,然后把中间的22取出继续比较。代码如下:

 1 class Solution {
 2 public:
 3     bool isPalindrome(int x) {
 4         if (x < 0) return false;
 5         int div = 1;
 6         while (x / div >= 10) div *= 10;
 7         while (x > 0) {
 8             int left = x / div;
 9             int right = x % 10;
10             if (left != right) return false;
11             x = (x % div) / 10;
12             div /= 100;
13         }
14         return true;
15     }
16 };

 

以上是关于LeetCode:回文数的主要内容,如果未能解决你的问题,请参考以下文章

leetCode第9题——回文数

LeetCode-009-回文数

LeetCode:判断回文数

LeetCode﹝回文ி﹞数串链表对

LeetCode﹝回文ி﹞数串链表对

LeetCode﹝回文ி﹞数串链表对