Leetcode刷题(一)-回文数的判断

简介: Leetcode刷题(一)-回文数的判断

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101
输出:false



1. 转为字符串判断

将给定的数字转为字符串,判断正向的字符串和逆向的字符串是否相等

classSolution {
publicbooleanisPalindrome(intx) {
Stringtempx=String.valueOf(x);
Stringreversex=newStringBuffer(tempx).reverse().toString();
if(tempx.equals(reversex)){
returntrue;
        }
returnfalse;
    }
}


优点: 容易理解

缺点: 占用内存大



2. 不使用字符串,直接对数字首尾判断

不使用字符串,直接对数字进行首尾判断

获取第一位数字使用除法可以得到

获取最后一位数字可以使用取模得到

classSolution {
publicbooleanisPalindrome(intx) {
// 排除边界if(x==0){
returntrue;
        }
if(x%10==0||x<0){
returnfalse;
        }
// 获取数字的长度intlength=1;
while(x/length>=10){
length*=10;
        }
// 循环判断首尾数字while(x>0){
if(x/length!=x%10){
returnfalse;
            }
// 每次将头尾两个数字去掉,获取剩下的数字x=(x%length)/10;
// 长度每次都要除以100 length/=100;
        }
returntrue;
    }
}


执行时间有所优化,内存占用没有太大提升



3. 将数字分为两半

看了题解...

将给定的数字分为两半,前一半和后一半比较

比如 1221 前一半为12 后一半为21(反转后为12),这样去比较

classSolution {
publicbooleanisPalindrome(intx) {
// 排除边界if(x==0){
returntrue;
        }
if(x%10==0||x<0){
returnfalse;
        }
// 将数字分为两半 获取后一半数字inthalfnum=0;
while(halfnum<x){
halfnum=halfnum*10+x%10;
x/=10;
        }
// 分成两半的时候需要区分偶数和基数,偶数可以直接== 奇数就需要排除后一半的一位 /10returnhalfnum==x||halfnum/10==x;
    }
}


效率100%,但是内存占用还是比较高

目录
相关文章
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
198 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
317 2
|
算法
LeetCode回文数(暴力解,求更好的思路)
这篇博客讨论了如何判断一个整数是否为回文数,提供了暴力解法的代码,并寻求更优的算法建议。
126 1
LeetCode回文数(暴力解,求更好的思路)
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
210 3
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
291 1
LeetCode第9题回文数
该文章介绍了 LeetCode 第 9 题回文数的解法,通过分析回文数的特征,只需反转一半数字进行比较即可,时间复杂度可降至 O(n/2),并总结了该题与整数反转有关,需根据回文数特征来解决。
LeetCode第9题回文数
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
125 3
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
184 1
|
Python
【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
本文介绍了LeetCode 478题的解法,题目要求在给定圆的半径和圆心位置的情况下实现在圆内均匀随机生成点的功能,并提供了Python的实现代码。
143 1
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
186 0
【Leetcode刷题Python】73. 矩阵置零

热门文章

最新文章