【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());
}
};
【LeetCode】Palindrome Number(回文数)的更多相关文章
- leetcode 9 Palindrome Number 回文数
Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...
- LeetCode Problem 9:Palindrome Number回文数
描述:Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could nega ...
- 【LeetCode】9. Palindrome Number 回文数
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:回文数,回文,题解,Leetcode, 力扣,Python ...
- Leetcode 3——Palindrome Number(回文数)
Problem: Determine whether an integer is a palindrome. Do this without extra space. 简单的回文数,大一肯定有要求写过 ...
- [LeetCode]9. Palindrome Number回文数
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same back ...
- Palindrome Number 回文数
判断一个数字是否是回文数,尝试不用其他额外空间. 注意: 负数也有可能成为回文数吗? 如果你想让int转为string,注意不用其他空间这个约束. 你也可以翻转一个int,但是有可能会溢出. ...
- 【LeetCode】9 Palindrome Number 回文数判定
题目: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could neg ...
- 9. Palindrome Number 回文数的判断
[抄题]: Determine whether an integer is a palindrome. An integer is a palindrome when it reads the sam ...
- [LeetCode] Prime Palindrome 质数回文数
Find the smallest prime palindrome greater than or equal to N. Recall that a number is prime if it's ...
随机推荐
- 12.JAVA-基本数据类型的包装类操作
1.基本数据类型的包装类 java是一个面向对象编程语言,也就是说一切操作都要用对象的形式进行.但是有个矛盾: 基本数据类型(char,int,double等)不具备对象特性(不携带属性和方法) 这样 ...
- texlive安装
本人电脑系统win8.1,安装texlive2016的时候报错"Can't spawn "cmd.exe": No such file or directory at.. ...
- WebService学习之旅(三)JAX-WS与Spring整合发布WebService
Spring本身就提供了对JAX-WS的支持,有兴趣的读者可以研究下Spring的Spring-WS项目,项目地址: http://docs.spring.io/spring-ws/sites/1.5 ...
- Objective-C language
Objective-C is the primary language used to write Mac software. If you're comfortable with basic obj ...
- Educational Codeforces Round 11 _D
http://codeforces.com/contest/660/problem/D 这个题据说是很老的题了 然而我现在才知道做法 用map跑了1953ms: 题目大意 给你n个点的坐标 求这些点能 ...
- webpack devserver的说明
一般我们在项目中 如果用webpack的话,基本都会用到webpack-dev-server,配置大致如下: devServer={ contentBase: basePath, historyApi ...
- 伪题解 洛谷 P1363 幻想迷宫(DFS)
毒瘤题,做了一晚上抄题解A了 因为是抄题解,我也不好意思说什么了,就发篇博客纪念一下吧 #include<iostream> #include<cstring> #includ ...
- java在线聊天项目 客户端登陆窗口LoginDialog的注册用户功能 修改注册逻辑 增空用户名密码的反馈 增加showMessageDialog()提示框
LoginDialog类的代码修改如下: package com.swift.frame; import java.awt.EventQueue; import java.awt.event.Acti ...
- CONTEST1001 题解
PROBLEM A 分析 这个题属于非常基础的输出问题,一般来说见到这种题可以直接复制粘贴即可. 讲解 没有什么详细说明的直接复制粘贴即可.这样不容易出错. 代码 #include <stdio ...
- Git学习——把文件推送到远程仓库
本地仓库与GitHub仓库关联 git remote add origin git@github.com:<github账户名>/<github的仓库名>.git 把本地库的所 ...