当前位置:网站首页>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;
}
};
边栏推荐
- How to solve the problem that win11 cannot write the value to the registry key?
- 被奉为经典的「金字塔原理」,教给我们哪些PPT写作技巧?
- Automatic generation of interface automatic test cases by actual operation
- What ppt writing skills does the classic "pyramid principle" teach us?
- Win11U盘拒绝访问怎么办?Win11U盘拒绝访问的有效解决方法
- 面对同样复杂的测试任务为什么大老很快能梳理解决方案,阿里十年测试工程师道出其中的技巧
- Length of the longest integrable subarray
- What if win11u disk refuses access? An effective solution to win11u disk access denial
- C server log module
- CDGA|数据治理不得不坚持的六个原则
猜你喜欢
阿里测试师用UI自动化测试实现元素定位
So this is the BGP agreement
面对同样复杂的测试任务为什么大老很快能梳理解决方案,阿里十年测试工程师道出其中的技巧
复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
原来这才是 BGP 协议
Win11亮度被锁定怎么办?Win11亮度被锁定的解决方法
NLP、视觉、芯片...AI重点方向发展几何?青源会展望报告发布[附下载]
Selected review | machine learning technology for Cataract Classification / classification
ICML 2022 | Meta提出鲁棒的多目标贝叶斯优化方法,有效应对输入噪声
一文搞懂Go语言中文件的读写与创建
随机推荐
word中插入图片后,图片上方有一空行,且删除后布局变乱
From automation to digital twins, what can Tupo do?
更强的 JsonPath 兼容性及性能测试之2022版(Snack3,Fastjson2,jayway.jsonpath)
Oracle database, numbers Force 2 decimal places to display-Alibaba Cloud
B2B mall system development of electronic components: an example of enabling enterprises to build standardized purchase, sale and inventory processes
工厂从自动化到数字孪生,图扑能干什么?
紫光展锐完成全球首个 5G R17 IoT NTN 卫星物联网上星实测
针对深度学习的“失忆症”,科学家提出基于相似性加权交错学习,登上PNAS
See how Tencent does interface automation testing
Why is the maximum speed the speed of light
Advantages of semantic tags and block level inline elements
同事的接口文档我每次看着就头大,毛病多多。。。
【ISMB2022教程】图表示学习的精准医疗,哈佛大学Marinka Zitnik主讲,附87页ppt
NLP, vision, chip What is the development direction of AI? Release of the outlook report of Qingyuan Association [download attached]
word中使用自动插入题注功能
GVM使用
Automatic generation of interface automatic test cases by actual operation
Taishan Office Technology Lecture: about the order of background (shading and highlighting)
易周金融 | Q1保险行业活跃人数8688.67万人 19家支付机构牌照被注销
Common verification rules of form components -1 (continuously updating ~)