当前位置: 首页 > news >正文

【LeetCode】8. 字符串转换为整数(Atoi) 题解

【LeetCode】8. 字符串转换为整数Atoi 题解Link: https://leetcode.cn/problems/string-to-integer-atoi/description/实现一个MyAtoi(string s)函数使其能将字符串转换成一个32 3232位有符号整数。函数MyAtoi(string s)的算法如下空格读入字符串并丢弃无用的前导空格 符号检查下一个字符假设还未到字符末尾为-还是。如果两者都不存在则假定结果为正。转换通过跳过前置零来读取该整数直到遇到非数字字符或到达字符串的结尾。如果没有读取数字则结果为0 00。舍入如果整数数超过32 3232位有符号整数范围[ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1][−231,231−1]需要截断这个整数使其保持在这个范围内。具体来说小于− 2 31 -2^{31}−231的整数应该被舍入为− 2 31 -2^{31}−231大于2 31 − 1 2^{31}-1231−1的整数应该被舍入为2 31 − 1 2^{31}-1231−1。返回整数作为最终结果。输入输出样例输入样例 #1s 42 s \texttt{42}s42输出样例 #142 4242输入样例 #1s -042 s \texttt{ -042}s-042输出样例 #1− 42 -42−42输入样例 #3s 1337c0d3 s \texttt{1337c0d3}s1337c0d3输出样例 #31337 13371337输入样例 #4s 0-1 s \texttt{0-1}s0-1输出样例 #40 00输入样例 #5s words and 987 s \texttt{words and 987}swords and 987输出样例 #50 00数据规模与约定0 ≤ ∣ s ∣ ≤ 200 0\le |s|\le 2000≤∣s∣≤200s ss中只包含数字、加减符号、字母、小数点和空格。SolutionLink: https://leetcode.cn/problems/string-to-integer-atoi/solutions/3973263/8-zi-fu-chuan-zhuan-huan-zheng-shu-ti-ji-tvle/1. 题意自行实现一个atoi函数实现字符串提取出开头的可被转化为数值的最长子串转化为数值并截断到Int32的范围。2. 分析比较基础的模拟题直接按照题目要求模拟就可以了。主要提一下代码实现层面需要注意的一些坑点字符串遍历可能出现越界建议是末尾加一个非数字字符充当边界判断开头的减号加号那里必须是if和else if如果两个判断都是用的if则会被-12这个测试样例卡掉纯数字部分是有可能会超过Int64的最大范围的如果中途就发现已经超过了Int32的范围提前截断返回即可注意这个截断的逻辑是饱和而非强制类型转化。时间复杂度是O ( ∣ s ∣ ) O(|s|)O(∣s∣)空间复杂度是O ( 1 ) O(1)O(1)。3. 代码publicclassSolution{publicintMyAtoi(strings){s*;intpos0,flag1;longabs0,result0;while(s[pos] ){pos;}if(s[pos]-){flag-1;pos;}elseif(s[pos]){flag1;pos;}while(char.IsDigit(s[pos])){absabs*10s[pos]-0;resultabs*flag;if(result-2147483648){return-2147483648;}if(result2147483647){return2147483647;}pos;}return(int)result;}}4. 轶事本题要求从一个字符串里提取出可被转化为数值的前缀这个从前往后遍历每个字符的流程是绝大多数算法竞赛中处理字符串输入的标准方法。此外这个逐字符扫描的流程也是《编译原理》中语法分析器分析代码结构的流程具体可以参考这篇文章 https://blog.csdn.net/weixin_52027970/article/details/161113011?spm1001.2014.3001.5502
http://www.gsyq.cn/news/1364181.html

相关文章:

  • 可微分编程与强化学习在粒子探测器优化中的应用
  • CSS Animations实战指南:打造流畅的用户体验
  • 2026黄冈市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • 新手避坑指南:在CentOS上用LVM调整/home和/root空间时,为什么df命令显示的和lvdisplay不一样?
  • 2026常德市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • 2026白城市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • 2026攀枝花市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • 机器学习势函数与反向蒙特卡洛在GeO2玻璃中程有序结构解析中的对比研究
  • MLOps实战:从模型实验到生产部署的全流程自动化与监控
  • Unity TouchScript多点触控底层原理与实战指南
  • 2026平顶山市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • 基于蒙特卡洛梯度估计的DSMC在线优化:让稀薄气体模拟自适应校准
  • 基于ECoG与机器学习的疼痛感知解码:从特征工程到脑区定位
  • 高能物理数据分析实战:从W玻色子截面测量到机器学习应用
  • Linux 用户管理详解(useradd / userdel / usermod 实战)
  • Linux 用户与用户组核心概念详解(零基础必懂)
  • 2026惠州市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • C#控制Windows软键盘精准弹出的实战方案
  • NLP如何从文本中自动提取业务流程模型:从规则到深度学习的演进与实践
  • 高维统计中岭回归与套索回归的自由度渐近理论
  • 别再折腾了!Ubuntu 22.04 LTS 上 OpenFOAM v2206 最稳安装指南(附Paraview配置)
  • 2026吉安市黄金回收门店指南:黄金 白银 铂金 彩金回收五家门店实测及联系方式推荐 - 盛世金银回收
  • 融合FIWARE与TinyML:构建工业级边缘智能的MLOps系统工程实践
  • Go JWT实战:从iOS兼容性到双存储Refresh Token的完整落地
  • 符号回归与CFD结合:从高保真数据中发现深水破碎波演化方程
  • XGBoost超参数调优与模型评估实战:构建复杂系统早期预警模型
  • 机器学习系统代码技术债务:成因、影响与工程化应对策略
  • 量子机器学习统一难题:贫瘠高原与核指数集中的等价性证明与设计启示
  • 企业级MCP Server OAuth授权接入的七层防御实践
  • 解决Keil MDK中MicroLIB与C++的兼容性问题