当前位置:网站首页>剑指 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;// 记录符号位
}
}
边栏推荐
- 记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
- 特征缩放 标准化 归一化
- Jvm-Sandbox-Repeater的部署
- Logo special training camp Section V font structure and common design techniques
- 啃下大骨头——排序(二)
- leetcode 72. Edit distance edit distance (medium)
- 面试必备 LeetCode 链表算法题汇总,全程干货!
- 制作条形码的手机App推荐
- Gnawing down the big bone - sorting (II)
- High school physics: linear motion
猜你喜欢
NFT Insider #64:电商巨头eBay提交NFT相关商标申请,毕马威将在Web3和元宇宙中投入3000万美元
都说软件测试很简单有手就行,但为何仍有这么多劝退的?
Common open source codeless testing tools
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
How to transfer to software testing, one of the high paying jobs in the Internet? (software testing learning roadmap attached)
Mongodb aggregation operation summary
【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
攻防世界 MISC 进阶区 hit-the-core
Attack and defense world misc advanced area ditf
随机推荐
Hit the core in the advanced area of misc in the attack and defense world
醒悟的日子,我是怎么一步一步走向软件测试的道路
leetcode 72. Edit distance edit distance (medium)
LOGO特训营 第五节 字体结构与设计常用技法
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
【lua】int64的支持
Attack and defense world misc advanced grace-50
高中物理:直线运动
攻防世界 MISC 进阶区 Ditf
攻防世界 MISC 进阶区 can_has_stdio?
30余家机构联合发起数字藏品行业倡议,未来会如何前进?
The sandbox has reached a cooperation with digital Hollywood to accelerate the economic development of creators through human resource development
Gnawing down the big bone - sorting (II)
蓝队攻防演练中的三段作战
嵌入式开发:技巧和窍门——提高嵌入式软件代码质量的7个技巧
Challenges faced by virtual human industry
Mongodb aggregation operation summary
Detailed explanation of flask context
短视频系统源码,点击屏幕空白处键盘不自动收起
Introduction and application of bigfilter global transaction anti duplication component