leetcode | go | 第8题 | 字符串转换整数

字符串转换整数

go

解决思路

  1. 字符串转换为整数类型
  2. Go语言标准输入输出库的基本使用教程
  3. 如何在Golang中将字符转换为整型
  4. 整体思路题解已经给出
  5. 首先去前导字符:若前导字符出现空格,继续;出现字母,返回结果;出现 + 、- 号,更改 pos 的值,i++ ,然后结束;出现数字,直接结束
  6. 分正负两种情况:正,先乘后加;负,先乘后减;并判断是否溢出,溢出则固定值并结束
  7. 返回结果

相关问题

  1. runtime: out of memory: cannot allocate 134217728-byte block (360448000 in use)
    fatal error: out of memory 代码由于缺少 i++ 陷入无限循环中
  2. 先字母后数字,这种情况是不行的,数字前面的前导字符只能为空格
import "fmt"
func myAtoi(s string) int {
    var num []int
    ans:=0
    length:=0
    pos:=true
    i:=0
    for i<len(s) {
        if s[i]=='-' {
            pos = false
            i++
            break
        }else if s[i]=='+' {
            i++
            break
        }else if s[i]==' ' {
            i++
        }else if s[i]>='0' && s[i]<='9' {
            break
        }else {
            return ans
        }
    }    
    for i<len(s) {
        if s[i]<'0' || s[i] > '9' {
            break
        }
        num = append(num,int(s[i]-'0'))
        length++
        i++
    }
    if pos == true {
        for i=0;i<length;i++ {
            ans*=10
            ans+=num[i] 
            if ans>2147483647 {
                ans = 2147483647
                break
            }   
        }
    }else {
        for i=0;i<length;i++ {
            ans*=10
            ans-=num[i]    
            if ans < -2147483648 {
                ans = -2147483648
                break
            }  
        }        
    }

    return ans 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值