这道题是LeetCode里的第9道题。

题目说的:

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

示例 1:

输入: 121
输出: true

示例 2:

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

示例 3:

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

进阶:

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

这道题虽然简单,但是对于简单题,我们要做到用比较骚的方法去解题,就像这道题一样,大部分人想到的是转字符串,然后双指针 blablabla......,不错,我也是这样想的。然而进阶的要求是不使用字符串,我首先想到的是求位数,其实就是变相的使用与字符串类似的方法,具体我就不介绍了,大家懂的都懂,这里我想要说的是用一种更巧妙的方法来解这道题。

我所做的:

class Solution {
public:
bool isPalindrome(int x) {
if(x<0||x>2147447412)return false;
int numSrc=x;
int numDst=0;
while(numSrc){
numDst=numDst*10+numSrc%10;
numSrc/=10;
}
return numDst==x;
}
};

我得到的:

太慢了,上几行代码加个速:

static int x = []() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();

我收获的:

我这道题之前的 if 条件是不包括 x>2147447412 的,后面官方加了个 2147483647 的实例,导致 int numDst 数据直接溢出,而且官方偷懒,可能只加了这一个实例,我加了这个条件后就通过了。我这个条件其实加了和没加一样,当 x=2147447399 时照样溢出,最好的解决办法是将 numDst 扩充为 long 型就一劳永逸了!

再上一个最快的解法:

static int x = []() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int reverseNumber = 0;
while (x > reverseNumber) {
reverseNumber = reverseNumber * 10 + x % 10;
x /= 10;
}
return x == reverseNumber || x == reverseNumber / 10;
}
};

这个方法是在我之上折半,最少缩短了一半的时间,而且还不用考虑数据溢出,节约内存,厉害!

static int x = []() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();
class Solution {
public:
bool isPalindrome(int x) {
string s;
ostringstream convert;
convert << x;
s = convert.str();
return equal(s.begin(), s.begin() + s.size() / 2, s.rbegin());
}
};

【LeetCode】Palindrome Number(回文数)的更多相关文章

  1. leetcode 9 Palindrome Number 回文数

    Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...

  2. LeetCode Problem 9:Palindrome Number回文数

    描述:Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could nega ...

  3. 【LeetCode】9. Palindrome Number 回文数

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:回文数,回文,题解,Leetcode, 力扣,Python ...

  4. Leetcode 3——Palindrome Number(回文数)

    Problem: Determine whether an integer is a palindrome. Do this without extra space. 简单的回文数,大一肯定有要求写过 ...

  5. [LeetCode]9. Palindrome Number回文数

    Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same back ...

  6. Palindrome Number 回文数

    判断一个数字是否是回文数,尝试不用其他额外空间. 注意: 负数也有可能成为回文数吗? 如果你想让int转为string,注意不用其他空间这个约束. 你也可以翻转一个int,但是有可能会溢出.     ...

  7. 【LeetCode】9 Palindrome Number 回文数判定

    题目: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could neg ...

  8. 9. Palindrome Number 回文数的判断

    [抄题]: Determine whether an integer is a palindrome. An integer is a palindrome when it reads the sam ...

  9. [LeetCode] Prime Palindrome 质数回文数

    Find the smallest prime palindrome greater than or equal to N. Recall that a number is prime if it's ...

随机推荐

  1. Redis的下载安装

    Redis官网只提供了Linux版,MicroSoft自己搞了个Windows版,可在GitHub下载: https://github.com/microsoftarchive/redis/relea ...

  2. php后端程序开发学习网站梳理

    博主只列举自己经常用到的: 看教学视频:慕课网,网易云课堂,百度传课 看博文和知识点:csdn 看源码:github 刷题:codewars 学习框架:thinkphp官网 下载相关资源:csdn 看 ...

  3. MapWindowsPoints函数使用

    MapWindowPoints的百度解释: 函数功能:该函数把相对于一个窗口的坐标空间的一组点映射成相对于另一窗口的坐标空 的一组点.   函数原型:int MapWindowPoints(HWND ...

  4. iphone之打开pdf、doc、xls文件用UIWebView

    //文件名字及类型 NSString *path=[[NSBundle mainBundle]pathForResource:@"xls1" ofType:@"xls&q ...

  5. GP SQL 优化

    1.收集统计信息vacuum full analyze ZCXT.ZCOT_PS_PROJECT; 2.检查表的数据量分布select gp_segment_id,count(*) from fact ...

  6. MIPS简单入门

    What ‘s the MIPS? 汇编语言 汇编语言是一类语言的总称,因处理器不同,而对应的不同机器的指令集也不同,产生了很多种汇编语言. 目前最流行的是ARM,MIPS,x86.ARM用于大量的移 ...

  7. git - GNU 交互工具

    语法 git [options] [path1] [path2] gitps [options] gitview [options] filename 注意 GIT 包 的 主要 配置文件 是 .gi ...

  8. PHP的PDF扩展库TCPDF将中文字体设置为内嵌字体的方法

    1. 下载要设置的字体,如名为simfang.ttf,放在./vendor/tecnickcom/tcpdf/tools目录中 2.在tools目录中按住shift,点击鼠标右键,点击“在此处打开命令 ...

  9. orcal中创建和删除表空间和用户

    1.创建表空间 create tablespace NW_DATA logging datafile 'F:\oracle\product\10.2.0\oradata\nwdb\NW_DATA.db ...

  10. 通过工厂模式批量创建对象后调用其中方法 出现XXXis not a function()问题原因

    //通过工厂模式批量创建 function Computer(color,weight,logo){         var obj=new Object();         obj.color=c ...