码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode(9):回文数

时间:2018-04-04 12:24:22      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:操作   允许   tco   solution   直接   nbsp   取整   空间   code   

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(9):回文数

标签:操作   允许   tco   solution   直接   nbsp   取整   空间   code   

原文地址:https://www.cnblogs.com/ariel-dreamland/p/8715286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!