[LintCode]字符串转整数python

本文详细解析了两种将Python字符串转换为整数的方法:一种是通过条件判断和循环实现,另一种则是利用正则表达式简化流程。文章深入探讨了每种方法的实现细节和边界条件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 字符串转整数

  1. 思路比较简单
已经通过,思路比较简单,用到的判断比较多
1.去空格
2.空字符串直接返回
3.for 循环
4.首字母是正负号和数字进入(else返回不是字母的情况)
	第二个if判断大于2**31和小于2**-31
5.return判断的是若果只有一个字母,需要判断正负号,视情况加int
def myAtoi(str):

    str = str.strip()
    if len(str) < 1:
        return 0
    end = 0
    for index,i in enumerate(str):
        if (i in ['-','+'] and index == 0) or i.isdigit():
            end += 1
            if len(str[:end]) > 9  and (int(str[:end]) > 2**31 - 1 or int(str[:end]) < -2**31):
               return 2**31 - 1 if str[0] != "-" else -(2)**31

        else:
            if str[:end]:
                return 0 if len(str[:end]) == 1 and str[:end] in ['-', '+'] else int((str[:end]))
            return 0

    return 0 if len(str[:end]) == 1 and str[:end] in ['-','+'] else int((str[:end]))

if __name__ == '__main__':
    str = "-91283472332"
    print(myAtoi(str))

2.用到了正则,比较简单

def myAtoi(str):

    import re

    pattern = r"[\s]*[+-]?[\d]+"
    match = re.match(pattern, str)
    if match:
        res = int(match.group(0))
        if res > 2 ** 31 - 1:
            res = 2 ** 31 - 1
        if res < - 2 ** 31:
            res = - 2 ** 31
    else:
        res = 0
    return res

if __name__ == '__main__':
    str = "-91283472332"
    print(myAtoi(str))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值