【LeetCode】Palindrome Number(回文数)
这道题是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(回文数)相关推荐
- [leetcode] Palindrome Number 回文数判断
Determine whether an integer is a palindrome. Do this without extra space. 题目大意:略 bool isPalindrome( ...
- LeetCode(9.回文数)JAVA
LeetCode(9.回文数) 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输 ...
- java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...
- LeetCode 09:回文数(Java实现)
LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...
- LeetCode实战:回文数
题目英文 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same ...
- LeetCode(JavaScript实现)——回文数
文章目录 1.题目 2.题解 2.1.将整数转换为字符串解法 实现方法一 实现方法二: 1.题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: ...
- LeetCode Algorithm 9. 回文数
9. 回文数 Ideas 算法:迭代 数据结构:一个变量就OK 思路: 首先负数肯定都不是回文数,所以遇到负数可以直接return false: 针对最后一位是0的情况,因为0不能作为开头,所以只要最 ...
- leetcode系列--9.回文数
leetcode系列–第9题.回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如,1 ...
- Python 算法 入门到精通 - LeetCode - 3 :回文数
本系列适合跟我一样新入门的同学,我会从最基础的方法一步一步优化,所有代码都可以直接复制运行,希望有所帮助.如果喜欢可以订阅本系列(基于python3) 先看题目: 给你一个整数 x ,如果 x 是一个 ...
最新文章
- 我在攻克机器学习硕士学位的那些年
- React源码学习——ReactClass
- Nutch是个不错的选择
- delphi word类型_现在的女生喜欢什么类型的男生?|What Kind of Boys Do Girls Like?
- Unity内实现Android APK版本更新
- 第三方支付异步通知的陷阱
- textarea标签内的文字无缘故居中解决原因
- POJ 2185 Milking Grid (KMP,GCD)
- BZOJ.2555.SubString(后缀自动机 LCT)
- 本地Navicat连接虚拟机MySQL
- android智能电视直播源抓取教程,求人不如求己,教你自己抓取直播源的方法!...
- 快手火山美拍秒拍抖音映客yy小影视频批量下载毛驴保存去水印助手
- 线性回归(一):一元线性回归(附python实现)
- lammps建模_LAMMPS常用建模方法总结
- JAVA通过Jemter工具并发测试
- ReportStudio入门教程(八十四) - 冻结行标题
- ogg19.1.0.0.4打补丁
- 2019年最新WHQL认证申请流程
- 项目风险的主要来源有哪些?应如何防范
- JavaScript 教程「6」:数组
热门文章
- android中string.xml使用总结,string.xml 的作用以及意义——国际化应用
- c语言可以通过malloc在栈上,C语言内部静态成员陷阱
- iphone彻底删除照片如何恢复_如何把删除的照片恢复?轻松解决恢复问题!
- linux shell 变量减法_第四章 shell和环境变量
- 云计算 码率适配限速_面向大型集团公司的云平台架构
- 通过IP获取地址,限制某些地址访问(GeoIp)
- 如何保证高可用?java测试工程师测试的方法
- Latex字体加粗命令备忘
- 【设计模式】装饰器模式类图和代码
- 【系统分析与设计】UML类图绘制方法(真の能看懂~!)