不转字符串判断——LeetCode题目9:回文数
时间:2022-07-23
本文章向大家介绍不转字符串判断——LeetCode题目9:回文数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原题描述
+
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。但你不能使用转字符串后判断的方法。
示例 1
输入:121
输出:true
示例 2
输入:-121
输出:false
示例 3
输入:10
输出:false
原题链接:https://leetcode-cn.com/problems/palindrome-number
思路解析
+
这是一道简单题,通过率在50%以上。
其实字符串转数字的方式反而麻烦。在之前的LeetCode题目7:整数反转中你已经知道了怎么把一个整数数字做反转,现在依然可以利用它来做回文判断。
示例中你已经知道了有两种情况是不可能返回true的:
1. 负数;
2. 尾数为0的数。
那么你可能还需要知道的是,回文的判断只需要搜索一半数字即可。比如4554,当你不断把尾数截取,并迭代构造反转整数的过程中,一定会经历下面的过程:
origin: 4554 -> 455 -> 45 -> 4 -> 0
reverted: 0 -> 4 -> 45 -> 455 -> 4554
其实revert反转到45的时候,就可以停下来了。因为此时origin正是整数前半部分,如果是回文,那么reverted和origin应该是相等的。
另外你需要注意的是:奇数位的整数是否是回文与正中间的数字无关。
好了,自己写写代码试试吧~
复杂度分析
+
- 时间复杂度:
- 空间复杂度:
C++参考代码
+
public:
bool isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0))
return false;
int revert = 0;
while(x > revert) {
revert = revert * 10 + x % 10;
x /= 10;
}
return revert == x || revert / 10 == x ? true: false;
}
};
- mongodb11天之屠龙宝刀(六)mapreduce:mongodb中mapreduce原理与操作案例
- 真实场景的虚拟视点合成(View Synthsis)详解
- mongodb11天之屠龙宝刀(七)functions: mongodb 执行 functions入门案例
- 真实场景的双目立体匹配(Stereo Matching)获取深度图详解
- mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比
- Java基础-day04-基础题
- OpenCV亚像素角点cornerSubPixel()源代码分析
- mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码
- 【Go 语言社区】 golang 算法课程 第一季 第2节 洗牌算法
- 一条update语句的优化探索(r9笔记第80天)
- OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
- Java基础-day03-代码题
- mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改
- Go语言社区 APP --问答模块数据存储流程及代码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux ulimit 调优
- 初识ABP vNext(3):vue对接ABP基本思路
- 0801-什么是Apache Ranger - 4 - Resource vs Tag Based Policies
- IDA-3D技术细节分析
- 0802-Cloudera Data Center7.1.3正式GA
- 2017,科学使用strace神器(附代码,举栗子)
- kubernete编排技术四:Job和CronJob
- Go 视图模板篇(二):模板指令
- go语言学习(五):通道的用法
- PHP无锁内存nosql---Yac的实战
- 0803-什么是Apache Ranger - 5 - Hive Plugin
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
- go语言学习(四):数组和切片
- 初识ABP vNext(4):vue用户登录&菜单权限
- 2017 从上到下打印树新解法