• JZ49 把字符串转换成整数


    把字符串转换成整数

    题目:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0.

    思路:这道题其实没有想象的那么多的边界条件,也没有那么繁琐。首先理解题目意思,是字符串转换为整数,不是小数,没有小数点或科学计数法的考量。

    然后一个字符转换为整数的方法是,res = res * 10 + str[i] - '0';

    边界情况

    1)开始都是空格

    2)考量第一个出现的字符是+,-

    3)转换的数字大于INT_MAX,小于INT_MIN。

    4)出现其他非数字字符。

    使用一个全局变量记录是否是输入错误,因为return 0有很多种情况,也可能是字符串就一个0,返回也是0,因此需要设置一个变量区分开来。

    func StrToInt(str string) int {
        res := 0
        flag := 1
        start := 0
        // space
        for start <= len(str)-1 && str[start] == ' ' {
            start++
        }
        // +/-
        if start <= len(str)-1 {
            if str[start] == '-' {
                flag = -1
                start++
            } else if str[start] == '+' {
                start++
            }
        }
        // is digital ?
        for start <= len(str)-1  {
            if !isDigital(str[start]) {
                return 0
            }
            if res == 0 {
                res += int(str[start] - '0')
                start++
            } else {
                res = res*10 + int((str[start] - '0'))
                start++
            }
            // overflow int32
            if res*flag > math.MaxInt32 {
                return math.MaxInt32
            } else if res*flag < math.MinInt32 {
                return math.MinInt32
            }
        }
    
        res *= flag
        return res
    }
    
    func isDigital(b byte) bool {
        if b <= '9' && b >= '0' {
            return true
        }
        return false
    }
  • 相关阅读:
    前台 图片上传 上传预览 调用上传服务(多张图片展示)
    正则表达式验证,只能输入数字
    点击文本框搜索,出现在下拉列表中
    keycode 锁键盘按键(只能输入数字)
    Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
    map 理解
    mybatis 关联关系查询 java
    mybatis 批量插入值的sql
    EJB
    JPA概要
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14642059.html
Copyright © 2020-2023  润新知