申明:本文只用做自己学习记录

题目

  • 实现一个 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 。

示例 4:

输入:s = “words and 987”
输出:0
解释:
第 1 步:“words and 987”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“words and 987”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“words and 987”(由于当前字符 ‘w’ 不是一个数字,所以读入停止)
^
解析得到整数 0 ,因为没有读入任何数字。
由于 0 在范围 [-231, 231 - 1] 内,最终结果为 0 。

示例 5:

输入:s = “-91283472332”
输出:-2147483648
解释:
第 1 步:"-91283472332"(当前没有读入字符,因为没有前导空格)
^
第 2 步:"-91283472332"(读入 ‘-’ 字符,所以结果应该是负数)
^
第 3 步:"-91283472332"(读入 “91283472332”)
^
解析得到整数 -91283472332
由于 -91283472332 小于范围 [-231, 231 - 1] 的下界,最终结果被截断为 -231 = -2147483648

代码

//注:这个样例在本地编译器可以成功,但是Leecode不知道为啥不行
//样例:"words and -987"
func main() {s := "words and -987"nums := myAtoi(s)fmt.Println(nums)
}func myAtoi(s string) int {// 初始化计数值var count int// 默认为正数var PON int = 1// 排除其他元素for i := 0; i < len(s); i++ {if s[i] == '+' || s[i] == '-' || ('0' <= s[i] && s[i] <= '9') {count = ibreak}}// 查询是否是+或者-for i := count; i < len(s); i++ {if s[i] == '-' {PON = PON * (-1)} else if '0' <= s[i] && s[i] <= '9' {count = ibreak}}var nums int = 0//遍历接下来的数字for i := count; i < len(s); i++ {//边界条件:超出范围,则跳出if s[i] < '0' && '9' > s[i] {break}nums = nums*10 + int(s[i]-'0')}//更新符号nums = nums * PON//判断是否超出边界if nums < -2147483648 {return -2147483648} else if nums > 2147483648 {return 2147483647}return nums
}

go语言刷题:8. 字符串转换整数 (atoi)相关推荐

  1. 判断字符为空_算法题:字符串转换整数 (atoi)

    题目描述 题解 分析 他人更优解 一.题目描述 二.题解 import math class Solution:def myAtoi(self,str):str = str.strip() #去除字符 ...

  2. Leetcode算法题(C语言)18--字符串转换整数 (atoi)

    题目:字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非 ...

  3. 8. 字符串转换整数 (atoi)(leetcode力扣算法 - java / rust)

    8. 字符串转换整数 (atoi): 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAto ...

  4. c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)

    " 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...

  5. LeetCode8. 字符串转换整数 (atoi)

    LeetCode8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  6. [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)

    [DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...

  7. 力扣——字符串转换整数 (atoi)

    字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(st ...

  8. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  9. C++字符串转换整数 (atoi)

    字符串转换整数 (atoi) 一个小更新. 今天仔细的研究了一下int型越界的情况, 顺便把力扣的一道题做了. 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 ...

  10. 8. 字符串转换整数 (atoi)(正则表达式)

    字符串转换整数--C, Python实现 1. 问题描述与分析 2. C语言实现 3. Python实现 3.1 普通判断法 3.2 正则表达式法 1. 问题描述与分析 问题描述: 问题分析: 该算法 ...

最新文章

  1. 开源组织:Datawhale
  2. win7 蓝牙4.0 ble驱动_初识物联网无线通信技术之蓝牙4.0BLE协议栈
  3. 前端学习(1303):复制文件夹
  4. World Wind Java开发之十——AnalyticSurface栅格渲染(转)
  5. 判斷指定資料庫存取權
  6. 45. 将脚本放在底部(6)
  7. PHP和zookeeper结合实践
  8. Oracle磁带机扩容方案,IBM TS3500带库磁带机扩容方案.doc
  9. 路径规划算法:动态规划
  10. 基于 MPC 控制算法的自适应巡航系统的研究
  11. windows10计算机策略,win10系统轻松玩转组策略的图文步骤
  12. win服务器下利用vlmcsd搭建KMS服务器激活win10
  13. 5464: Star Arrangements
  14. python跳出循环的方法_Python 跳出嵌套循环的5种方法
  15. Maven入门-6-Maven的生命周期和核心命令详细介绍
  16. 【bitset乱搞】BZOJ3687 简单题
  17. 使用Cookie记住多个登录账号!
  18. 组合保险策略及相应模拟测算工具----Discrete Hedging: Guaranteed CPPI Structures
  19. Python3爬虫学习笔记——xpath练习之爬取起点网玄幻小说排行
  20. 无法打开服务器性能对象,日志提示:无法打开服务器服务性能对象,如何解决?...

热门文章

  1. 《柯林斯高阶英语学习词典》
  2. 这些家具设计得太巧妙,你的眼睛也被其欺骗了
  3. 2023全国特种设备作业人员(N1)叉车司机模拟考试试卷一[安考星]
  4. 女孩子转行软件测试还是ui,女生可以做软件测试吗?
  5. 报错:ModuleNotFoundError: No module named ‘werkzeug.useragents‘
  6. 如何在Apple Watch上关闭对讲机
  7. Mac -- MySql配置环境变量
  8. 【C语言】case 关键字
  9. spring boot2 添加拦截器后,thymeleaf页面无法正常解析
  10. 详解MySQL事务原理