当前位置:网站首页>剑指 Offer 67. 把字符串转换成整数
剑指 Offer 67. 把字符串转换成整数
2022-07-04 22:20:00 【LuZhouShiLi】
剑指 Offer 67. 把字符串转换成整数
题目
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。
首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。
当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。
注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。
在任何情况下,若函数不能进行有效的转换时,请返回 0。
思路
- 首先删除空格字符
- 符号位:新建一个变量保存符号位,‘-’ 符号位记录为1
- 非数字字符:遇到首个非数字的字符,立刻返回
- 数字字符:
- 字符转数字:将该字符减去’0’即可
- 数字拼接:设置当前位字符是c,当前位数字是x,数字结果是res,则数字拼接公式是:res = res * 10 + c - ‘0’
代码
class Solution {
public int strToInt(String str) {
char[] c = str.trim().toCharArray();// 去掉空格
if(c.length == 0) return 0;
int res = 0;
int bndry = Integer.MAX_VALUE / 10;
int i = 1,sign = 1;
if(c[0] == '-') sign = -1; // 符号位
else if(c[0] != '+') i = 0;
for(int j = i; j < c.length; j++)
{
if(c[j] < '0' || c[j] > '9')
{
break;// 不是数字位 直接跳出循环 然后直接返回
}
// 越界
if(res > bndry || res == bndry && c[j] > '7') return sign == 1 ? Integer.MAX_VALUE:Integer.MIN_VALUE;
// 累加
res = res * 10 + (c[j] - '0');
}
return sign * res;// 记录符号位
}
}
边栏推荐
- 关于栈区、堆区、全局区、文字常量区、程序代码区
- 共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
- NFT Insider #64:电商巨头eBay提交NFT相关商标申请,毕马威将在Web3和元宇宙中投入3000万美元
- Google Earth Engine(GEE)——以MODIS/006/MCD19A2为例批量下载逐天AOD数据逐天的均值、最大值、最小值、标准差、方差统计分析和CSV下载(北京市各区为例)
- 10 schemes to ensure interface data security
- Now MySQL cdc2.1 is parsing the datetime class with a value of 0000-00-00 00:00:00
- PMO: compare the sample efficiency of 25 molecular optimization methods
- The new version judges the code of PC and mobile terminal, the mobile terminal jumps to the mobile terminal, and the PC jumps to the latest valid code of PC terminal
- 攻防世界 MISC 进阶区 hit-the-core
- Introduction and application of bigfilter global transaction anti duplication component
猜你喜欢
10 schemes to ensure interface data security
sobel过滤器
攻防世界 MISC 进阶区 3-11
NFT Insider #64:电商巨头eBay提交NFT相关商标申请,毕马威将在Web3和元宇宙中投入3000万美元
攻防世界 misc 进阶区 2017_Dating_in_Singapore
PMO: compare the sample efficiency of 25 molecular optimization methods
攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
LOGO特訓營 第三節 首字母創意手法
【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用
攻防世界 misc 高手进阶区 a_good_idea
随机推荐
Unity修仙手游 | lua动态滑动功能(3种源码具体实现)
集群的概述与定义,一看就会
Lost in the lock world of MySQL
Naacl-22 | introduce the setting of migration learning on the prompt based text generation task
蓝队攻防演练中的三段作战
繁華落盡、物是人非:個人站長該何去何從
PostgreSQL JOIN实践及原理
MD5 tool class
攻防世界 MISC 进阶区 can_has_stdio?
POM in idea XML dependency cannot be imported
Force buckle 2_ 1480. Dynamic sum of one-dimensional array
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
醒悟的日子,我是怎么一步一步走向软件测试的道路
leetcode 72. Edit distance edit distance (medium)
NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
leetcode 72. Edit Distance 编辑距离(中等)
Locust performance test - environment construction and use
【lua】int64的支持
Embedded development: skills and tricks -- seven skills to improve the quality of embedded software code
达梦数据凭什么被称为国产数据库“第一股”?