当前位置:网站首页>LeetCode 8. 字符串转换整数 (atoi)
LeetCode 8. 字符串转换整数 (atoi)
2022-07-04 19:13:00 【_刘小雨】
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。
函数 myAtoi(string s) 的算法如下:
读入字符串并丢弃无用的前导空格
检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。
返回整数作为最终结果。
注意:
本题中的空白字符只包括空格字符 ’ ’ 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。
示例 1:
输入:s = “42”
输出:42
解释:加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
第 1 步:“42”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“42”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“42”(读入 “42”)
^
解析得到整数 42 。
由于 “42” 在范围 [-231, 231 - 1] 内,最终结果为 42 。
示例 2:
输入:s = " -42"
输出:-42
解释:
第 1 步:" -42"(读入前导空格,但忽视掉)
^
第 2 步:" -42"(读入 ‘-’ 字符,所以结果应该是负数)
^
第 3 步:" -42"(读入 “42”)
^
解析得到整数 -42 。
由于 “-42” 在范围 [-231, 231 - 1] 内,最终结果为 -42 。
示例 3:
输入:s = “4193 with words”
输出:4193
解释:
第 1 步:“4193 with words”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“4193 with words”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“4193 with words”(读入 “4193”;由于下一个字符不是一个数字,所以读入停止)
^
解析得到整数 4193 。
由于 “4193” 在范围 [-231, 231 - 1] 内,最终结果为 4193 。
Code:
class Solution {
public:
int myAtoi(string s) {
int re = 0;
int k = 0;
while(k < s.size() && s[k] == ' ') k ++;
if( k == s.size()) return 0;
int flag = 1;
if(s[k] == '-') flag = -1, k ++;
if(s[k] == '+')
{
if (flag == -1) return 0;
else
k ++;
}
while(k < s.size() && s[k] >='0' && s[k] <= '9')
{
int x = s[k] - '0';
if(flag > 0 && re > (INT_MAX - x)/ 10) return INT_MAX;
if(flag < 0 && -re < (INT_MIN + x)/ 10) return INT_MIN;
if(-re * 10 - x == INT_MIN) return INT_MIN; // 这句是特殊判断的, INT_MN 和INT_MAX的绝对值不一样
re = re * 10 + x;
k++;
}
re *= flag;
return re;
}
};
边栏推荐
- 2022 version of stronger jsonpath compatibility and performance test (snack3, fastjson2, jayway.jsonpath)
- What financial products can you buy with a deposit of 100000 yuan?
- Summary of the mistakes in the use of qpainter in QT gobang man-machine game
- Is it safe for Great Wall Securities to open an account? Stock account opening process online account opening
- Practical examples of node strong cache and negotiation cache
- ICML 2022 | Meta提出鲁棒的多目标贝叶斯优化方法,有效应对输入噪声
- 更强的 JsonPath 兼容性及性能测试之2022版(Snack3,Fastjson2,jayway.jsonpath)
- #夏日挑战赛#带你玩转HarmonyOS多端钢琴演奏
- 凌云出海记 | 沐融科技&华为云:打造非洲金融SaaS解决方案样板
- 太方便了,钉钉上就可完成代码发布审批啦!
猜你喜欢
分析伦敦银走势图的技巧
node强缓存和协商缓存实战示例
#夏日挑战赛#带你玩转HarmonyOS多端钢琴演奏
[Beijing Xunwei] i.mx6ull development board porting Debian file system
Selected review | machine learning technology for Cataract Classification / classification
What if the win11 shared file cannot be opened? The solution of win11 shared file cannot be opened
From automation to digital twins, what can Tupo do?
B2B mall system development of electronic components: an example of enabling enterprises to build standardized purchase, sale and inventory processes
Win11U盘拒绝访问怎么办?Win11U盘拒绝访问的有效解决方法
Qt编写物联网管理平台38-多种数据库支持
随机推荐
九齐单片机NY8B062D单按键控制4种LED状态
LeetCode 871. Minimum refueling times
Record the online bug solving list (unfinished to be continued 7/4)
NLP, vision, chip What is the development direction of AI? Release of the outlook report of Qingyuan Association [download attached]
Flet tutorial 05 outlinedbutton basic introduction (tutorial includes source code)
Talking about cookies of client storage technology
凌云出海记 | 沐融科技&华为云:打造非洲金融SaaS解决方案样板
LeetCode 871. 最低加油次数
Managed service network: application architecture evolution in the cloud native Era
实践示例理解js强缓存协商缓存
Win11U盘拒绝访问怎么办?Win11U盘拒绝访问的有效解决方法
word中插入圖片後,圖片上方有一空行,且删除後布局變亂
Function analysis and source code of hash guessing game system development
word中插入图片后,图片上方有一空行,且删除后布局变乱
Lingyun going to sea | Murong Technology & Huawei cloud: creating a model of financial SaaS solutions in Africa
实操自动生成接口自动化测试用例
电脑共享打印机拒绝访问要怎么办
科普达人丨一文看懂阿里云的秘密武器“神龙架构”
After inserting a picture into word, there is a blank line above the picture, and the layout changes after deletion
Win11共享文件打不开怎么办?Win11共享文件打不开的解决方法