LeetCode 08字符串转整数09回文数
维护公众号:
bigsai
,点赞再看,养成习惯!
08字符串转整数
题目描述:
分析:
本题主要是字符串的处理。需要注意以下几点:
- 去除字符前的空字符
- 第一个有效字符必须是符号或者数字
- 只能有一个符号
- 注意数值越界
所以在具体处理的时候,你可以截取一个字符然后直接转成一个数字类型(考虑越界)但是并不推荐。这里个人使用遍历字符串数字字符时候将其与'0'
字符差转换成数字进行计算,当超出int范围直接停止。
通过代码为:
public static int myAtoi(String str) { int zheng = 1;int index=0;long value=0;while (index<str.length()&&str.charAt(index)==' ') {//防止"" 和 " "等index++;}if(index>str.length()-1)return 0;if(str.charAt(index)=='+') {index++;}else if (str.charAt(index)=='-') {zheng=-1;index++;}for(int j=index;j<str.length();j++){ if(str.charAt(j)>='0'&&str.charAt(j)<='9'){value=value*10+str.charAt(j)-'0';if(value*zheng>Integer.MAX_VALUE)return Integer.MAX_VALUE;if(value*zheng<Integer.MIN_VALUE)return Integer.MIN_VALUE;}else {break;}}value=zheng*value; return (int)value;}
09回文数
描述:
- 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
分析:
此题比较简单,需要考虑以下几点:
- 不能是负数,负数不满足回文数的要求
- 考虑奇数偶数长度数字会文性
提供两种方法:第一种将数字转成字符串,从中间向两侧拓展比较。
实现代码为:
//11%public boolean isPalindrome(int x) {if(x<0)return false;String va=x+"";int left=0,right=0;if(va.length()%2==0){left=va.length()/2-1;right=left+1;}else {left=va.length()/2;right=left;}while (left>=0) {if(va.charAt(left)!=va.charAt(right))return false;left--;right++;}return true;}
但很遗憾这种方法效率比较低只能打败11%的人呢,大概18ms左右。
但是可以换一种思路,使用字符串比较效率较低。可以使用数字类型计算一遍得到逆向数值然后进行比较最终值是否相同:
public boolean isPalindrome(int x) {if(x<0)return false;int team=x;int va=0;while (x>0) {va=va*10+x%10;x/=10;}if(va==team)return true;return false;}
这样就大概9-10ms左右,9ms大概打败98%而10ms只40%多。
最后
本周打开结束,本周打开题解为:
05最长回文串
06Z字形变换&07整数反转
欢迎点赞关注。也可添加笔者微信公众号:bigsai
,回复进群即可加入打卡。
LeetCode 08字符串转整数09回文数相关推荐
- LeetCode 2217. 找到指定长度的回文数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 给你一个整数数组 qu ...
- 求解如何判断一个整数是不是回文数的问题
1.先了解概念 什么样的整数叫回文数? 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如:121是回文数,123不是回文数.这里有两个容易混淆的地方: ①.负数全都不是回文数.因为要 ...
- leetcode 两数之和 整数反转 回文数 罗马数字转整数
1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...
- Leetcode刷题(2)回文数
最好的种树是十年前,其次是现在.歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的 ...
- 怎样判断一个整数是不是回文数?
首先说明一下回文数是什么,回文数就是将这个数反转之后,得到的数仍然是同一个数.例如:131,25352就是回文数. 那么怎么判断一个数是不是回文数呢? 有两种方法,第一种是数字翻转,即将整数翻转以后, ...
- Leetcode 08. 字符串转换整数 (atoi)
原题链接 1.字符 0~~~~~9 分别对应整数 48~~~~~57 2.先过滤空白 3.确定前面所带的符号 4. long long res = 0; res = res * 10 + s ...
- LeetCode 09. 回文数
原题链接 class Solution { public:bool isPalindrome(int x) {if(x<0)return false;if(x>=0 && ...
- leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间
题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...
- LeetCode(JavaScript实现)——回文数
文章目录 1.题目 2.题解 2.1.将整数转换为字符串解法 实现方法一 实现方法二: 1.题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: ...
最新文章
- 【详解】Java语言的特点以及Java语言与C/C++的比较
- 谈一类神奇的数据结构——猫树
- 快速上手Tomcat(eclipse中配置tomcat)
- Android中ICS4.0源码Launcher启动流程分析【android源码Launcher系列一】
- 【论文写作】文献资料的作用只是添砖加瓦
- oracle数据库卡住了无法保存,Oracle数据库使用NFS存储,启动报错提示无法锁定文件...
- java float round_Java Math类static int round(float f)与示例
- c++和QT实现俄罗斯方块,使用GraphicsView。
- 代码阅读 | 孪生网络目标跟踪的尺度(Scale)计算 (In ATOM)
- mysql解决端口占用
- 使用扩展欧几里得算法对逆元求解
- 2019最新某私塾在线高级java软件架构师实战培训教程
- FFmpeg学习(四)-- libavformat 代码组成
- 文件加密器 java_文件加密器: 使用Java Swing编写的文件加密工具,可批量加密电脑中的文件。兼容Windows和Linux。...
- 直播延时是如何产生的?4G摄像头无插件播放视频流媒体服务器EasyDSS超低延时直播的实现方案
- 【2022第十三届蓝桥杯】c/c++ 大学c组 解题报告
- 3D模型欣赏:人形武器 古代兵器 【3D游戏建模教程】
- C语言编译器和amd兼容吗,Intel的“霸道”:深究编译器对CPU性能的影响
- 原来高手是这样练成的
- 敬老院无线看护系统解决方案,让老人安心,家属放心
热门文章
- 石墨烯区块链(3)软件升级
- 【django】配置URLconf
- VMProtect SDK+ASProtect SDK保护
- 在计算机系统中使用防病毒软件的作用,防病毒软件的作用是 江苏省网络与信息安全技能竞赛题库(5)...
- HTML+CSS实战作业
- 2020-10-27(补码10000000为什么可以表示-128?)
- 西部数据 MyCloud 网络存储存在 RCE 漏洞
- Break,Continue,Return 傻傻分不清楚
- 5、删除被其它表关联的主表
- 春季每日一题2022 Week 1 【完结】