python_lintcode_困难题_54

本文介绍了一个Python实现的atoi函数,用于将字符串转换为整数,并处理了各种边界情况,如非法输入、空格、正负号及溢出等问题。

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

54 转换字符串到整数

题目:实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。

样例
“10” =>10
“-1” => -1
“123123123123123” => 2147483647
“1.0” => 1

思路

样例中:"    12lint"=12;
"  12-lin 33"=12 
"-12- li"=-12
"lint -12"=0

- 合法的整数:第一个是空格空格…空格 +(-) 数字(1-9)数字(0-9)…数字(0-9)
- 新建一个空字符,存放得到的整数字符串。
- 先找到不是空格的第一个字符,若不是数字和正负,则返回这个空字符,后面用int(该字符)会出错返回0.
- 找到第一个是数字(不包括0)或者正负,后面只能是数字(包括0)
- 若接下来出现只能出现数字,不是a=’0123456789’则返回前面得到的整数字符串。

本次用到了python异常处理try和except

代码

class Solution:
    # @param str: a string
    # @return an integer
    def atoi(self, str):
        # write your code here
        str1=''             #存放str出现的合法整数
        a='0123456789'     
        b='-+123456789' 
        for i in str:
            if i==' ':      #一开始空格,都直接continue
                continue
            if len(str1)==0 and i in b:
                str1=str1+i
                continue
            if i in a:
                str1=str1+i
                continue
            break
        try:
            a=int(str1)    #若不是数字,int()会异常
            if -2147483648<=a<=2147483647:
                return a
            if a>0:
                return 2147483647
            else:
                return -2147483648
        except:
            return 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值