LeetCode Golang 8. 字符串转换整数 (atoi)
8. 字符串转换整数 (atoi)
首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。
当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。
注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。
在任何情况下,若函数不能进行有效的转换时,请返回 0。
说明:
假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [-2^31, 2^31 - 1]。如果数值超过这个范围,qing返回 INT_MAX (2^31 - 1) 或 INT_MIN (-2^31) 。
// 运行 4ms, 大部分都是4ms 左右的运行时间
package main import (
"fmt"
"strings"
"math"
) // 私有 atoi 转换
// 在任何情况下,若函数不能进行有效的转换时,请返回 0。
// " -42" -> -42
//输入: "4193 with words"
//输出: 4193
//输入: "words and 987"
//输出: 0
//输入: "-91283472332" < math.MinInt32
//输出: -2147483648
func myAtoi(str string) int {
if str == "" {
return 0
} // 有空格前缀则全部替换
for strings.HasPrefix(str," ") {
str = str[1:]
}
if str == "" {
return 0
}
// 正负符号判定
sign := 1
for str[0] == 45 || str[0] == 43{
if str[0] == 45{
sign = -1
str = str[1:]
break
}
if str[0] == 43{
sign = 1
str = str[1:]
break
}
} if str == "" {
return 0
} for strings.HasPrefix(str,"0") {
str = str[1:]
}
if str == "" {
return 0
} tmp := []int{} for _,v := range str {
// ASCII 码 , 57 -> 9 , 48 -> 0
if v > 57 || v < 48 {
break
} else {
tmp = append(tmp,int(v-48))
}
} //fmt.Println(tmp) // 没有数字返回0
if len(tmp) == 0 {
return 0
}
// 简单越界处理
if len(tmp) > 10 || (len(tmp) == 9 && tmp[0] > 2){
if sign == 1 {
return math.MaxInt32
}
if sign == -1 {
return math.MinInt32
}
} j:=len(tmp)-1
tmpInt := 0
for i:=0;i<len(tmp);i++{
tmpInt += tmp[i] * pow10(j)
j--
} if tmpInt > math.MaxInt32{
if sign == -1 {
return math.MinInt32
} else {
return math.MaxInt32
}
} return tmpInt * sign
} func pow10(i int)int{
if i == 0 {
return 1
}
rst := 1
for ;i>0;i--{
rst *= 10
}
return rst
} func main() {
fmt.Println(myAtoi("-+2"))
}
LeetCode Golang 8. 字符串转换整数 (atoi)的更多相关文章
- 【LeetCode 8】字符串转换整数 (atoi)
题目链接 [题解] 注意越界的处理就好 简单题 还有.. 正的-2^31不能由2^31取相反数得到,因为正的int最多到2^31-1 [代码] class Solution { public: boo ...
- 前端与算法 leetcode 8. 字符串转换整数 (atoi)
目录 # 前端与算法 leetcode 8. 字符串转换整数 (atoi) 题目描述 概要 提示 解析 解法一:正则 解法二:api 解法二:手搓一个api 算法 传入测试用例的运行结果 执行结果 G ...
- LeetCode 8. 字符串转换整数 (atoi)(String to Integer (atoi))
8. 字符串转换整数 (atoi) 8. String to Integer (atoi) 题目描述 LeetCode LeetCode8. String to Integer (atoi)中等 Ja ...
- 字符串转换整数 (atoi) C++实现 java实现 leetcode系列(八)
字符串转换整数 (atoi) java实现 C++实现 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...
- 17、字符串转换整数 (atoi)
17.字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非 ...
- 8. 字符串转换整数 (atoi)
8. 字符串转换整数 (atoi) 方法一 import re import math class Solution(object): def myAtoi(self, str): "&qu ...
- 【LeetCode】String to Integer (atoi)(字符串转换整数 (atoi))
这道题是LeetCode里的第8道题. 题目要求: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- [LeetCode] 8. 字符串转换整数 (atoi)
题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- 每日一题LeetCode 8. 字符串转换整数 (atoi)
问题描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将 ...
随机推荐
- ubuntu18.0安装redis
ubuntu版本:Ubuntu-Server 10.04.1 LTS redis版本:4.0.9 安装 使用apt安装 sudo apt-get update sudo apt-get install ...
- day06-08初识面向对象
一.面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.优点是:极大的降低了写程序的 ...
- 10件5G能实现,但4G不能做的事情
10件5G能实现,但4G不能做的事情 从三星Galaxy S10 5G手机到OnePlus 7 Pro 5G手机以及更高版本,首批5G手机现已上市.5G网络时代的开启是从小范围内,如果你居住在可以使用 ...
- PHP迭代器的内部执行过程
下面我们来了解如何实现一个自定义的迭代器,然后再开始慢慢理解迭代器的内部工作原理.先来看一个官方的例子: class myIterator implements Iterator { private ...
- 理解Faster-RCNN 中的Anchor
先上图看一下Faster R-CNN操作流程: 图片说明:Faster R-CNN=Fast R-CNN+RPN,其中Fast R-CNN结构不变:RPN负责生成proposals,配合最后一层的f ...
- Python笔记9-----不等长列表转化成DataFrame
1.不同长度的列表合并成DataFrame. 法1: ntest=['a','b'] ltest=[[1,2],[4,5,6]] 先变成等长的列表:(a:1),(a:2),(b:4),(b:5),(b ...
- https自签证书
linux自带openssl,所以最好在linux平台操作 第一步:生成采用des3算法保护的私钥:openssl genrsa -des3 -out private-rsa.key 1024 命令执 ...
- jquery 去重
var yearArray = new Array(2009, 2009, 2010, 2010, 2009, 2010); $.unique(yearArray); alert(yearArray) ...
- C# string bytes互转
string str = "spike"; byte[] bytes = System.Text.Encoding.Default.GetBytes(str); foreach ( ...
- BA-siemens-insight_ppcl_adapts函数用法
adapts函数是比pid调节性更好的自适应调节算法,比pid有更好的稳定性,具有震荡小.调节过程快.平稳等特点,函数的用法如下: