go语言刷题:8. 字符串转换整数 (atoi)
申明:本文只用做自己学习记录
题目
- 实现一个 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)相关推荐
- 判断字符为空_算法题:字符串转换整数 (atoi)
题目描述 题解 分析 他人更优解 一.题目描述 二.题解 import math class Solution:def myAtoi(self,str):str = str.strip() #去除字符 ...
- Leetcode算法题(C语言)18--字符串转换整数 (atoi)
题目:字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非 ...
- 8. 字符串转换整数 (atoi)(leetcode力扣算法 - java / rust)
8. 字符串转换整数 (atoi): 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAto ...
- c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)
" 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...
- LeetCode8. 字符串转换整数 (atoi)
LeetCode8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)
[DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...
- 力扣——字符串转换整数 (atoi)
字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(st ...
- Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...
- C++字符串转换整数 (atoi)
字符串转换整数 (atoi) 一个小更新. 今天仔细的研究了一下int型越界的情况, 顺便把力扣的一道题做了. 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 ...
- 8. 字符串转换整数 (atoi)(正则表达式)
字符串转换整数--C, Python实现 1. 问题描述与分析 2. C语言实现 3. Python实现 3.1 普通判断法 3.2 正则表达式法 1. 问题描述与分析 问题描述: 问题分析: 该算法 ...
最新文章
- 开源组织:Datawhale
- win7 蓝牙4.0 ble驱动_初识物联网无线通信技术之蓝牙4.0BLE协议栈
- 前端学习(1303):复制文件夹
- World Wind Java开发之十——AnalyticSurface栅格渲染(转)
- 判斷指定資料庫存取權
- 45. 将脚本放在底部(6)
- PHP和zookeeper结合实践
- Oracle磁带机扩容方案,IBM TS3500带库磁带机扩容方案.doc
- 路径规划算法:动态规划
- 基于 MPC 控制算法的自适应巡航系统的研究
- windows10计算机策略,win10系统轻松玩转组策略的图文步骤
- win服务器下利用vlmcsd搭建KMS服务器激活win10
- 5464: Star Arrangements
- python跳出循环的方法_Python 跳出嵌套循环的5种方法
- Maven入门-6-Maven的生命周期和核心命令详细介绍
- 【bitset乱搞】BZOJ3687 简单题
- 使用Cookie记住多个登录账号!
- 组合保险策略及相应模拟测算工具----Discrete Hedging: Guaranteed CPPI Structures
- Python3爬虫学习笔记——xpath练习之爬取起点网玄幻小说排行
- 无法打开服务器性能对象,日志提示:无法打开服务器服务性能对象,如何解决?...
热门文章
- 《柯林斯高阶英语学习词典》
- 这些家具设计得太巧妙,你的眼睛也被其欺骗了
- 2023全国特种设备作业人员(N1)叉车司机模拟考试试卷一[安考星]
- 女孩子转行软件测试还是ui,女生可以做软件测试吗?
- 报错:ModuleNotFoundError: No module named ‘werkzeug.useragents‘
- 如何在Apple Watch上关闭对讲机
- Mac -- MySql配置环境变量
- 【C语言】case 关键字
- spring boot2 添加拦截器后,thymeleaf页面无法正常解析
- 详解MySQL事务原理