这道题是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());}
};

转载于:https://www.cnblogs.com/1000sakura/p/10743294.html

【LeetCode】Palindrome Number(回文数)相关推荐

  1. [leetcode] Palindrome Number 回文数判断

    Determine whether an integer is a palindrome. Do this without extra space. 题目大意:略 bool isPalindrome( ...

  2. LeetCode(9.回文数)JAVA

    LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...

  3. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  4. LeetCode 09:回文数(Java实现)

    LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...

  5. LeetCode实战:回文数

    题目英文 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same ...

  6. LeetCode(JavaScript实现)——回文数

    文章目录 1.题目 2.题解 2.1.将整数转换为字符串解法 实现方法一 实现方法二: 1.题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: ...

  7. LeetCode Algorithm 9. 回文数

    9. 回文数 Ideas 算法:迭代 数据结构:一个变量就OK 思路: 首先负数肯定都不是回文数,所以遇到负数可以直接return false: 针对最后一位是0的情况,因为0不能作为开头,所以只要最 ...

  8. leetcode系列--9.回文数

    leetcode系列–第9题.回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如,1 ...

  9. Python 算法 入门到精通 - LeetCode - 3 :回文数

    本系列适合跟我一样新入门的同学,我会从最基础的方法一步一步优化,所有代码都可以直接复制运行,希望有所帮助.如果喜欢可以订阅本系列(基于python3) 先看题目: 给你一个整数 x ,如果 x 是一个 ...

最新文章

  1. 我在攻克机器学习硕士学位的那些年
  2. React源码学习——ReactClass
  3. Nutch是个不错的选择
  4. delphi word类型_现在的女生喜欢什么类型的男生?|What Kind of Boys Do Girls Like?
  5. Unity内实现Android APK版本更新
  6. 第三方支付异步通知的陷阱
  7. textarea标签内的文字无缘故居中解决原因
  8. POJ 2185 Milking Grid (KMP,GCD)
  9. BZOJ.2555.SubString(后缀自动机 LCT)
  10. 本地Navicat连接虚拟机MySQL
  11. android智能电视直播源抓取教程,求人不如求己,教你自己抓取直播源的方法!...
  12. 快手火山美拍秒拍抖音映客yy小影视频批量下载毛驴保存去水印助手
  13. 线性回归(一):一元线性回归(附python实现)
  14. lammps建模_LAMMPS常用建模方法总结
  15. JAVA通过Jemter工具并发测试
  16. ReportStudio入门教程(八十四) - 冻结行标题
  17. ogg19.1.0.0.4打补丁
  18. 2019年最新WHQL认证申请流程
  19. 项目风险的主要来源有哪些?应如何防范
  20. JavaScript 教程「6」:数组

热门文章

  1. android中string.xml使用总结,string.xml 的作用以及意义——国际化应用
  2. c语言可以通过malloc在栈上,C语言内部静态成员陷阱
  3. iphone彻底删除照片如何恢复_如何把删除的照片恢复?轻松解决恢复问题!
  4. linux shell 变量减法_第四章 shell和环境变量
  5. 云计算 码率适配限速_面向大型集团公司的云平台架构
  6. 通过IP获取地址,限制某些地址访问(GeoIp)
  7. 如何保证高可用?java测试工程师测试的方法
  8. Latex字体加粗命令备忘
  9. 【设计模式】装饰器模式类图和代码
  10. 【系统分析与设计】UML类图绘制方法(真の能看懂~!)