leetcode刷题日记之字符串转换整数。

  1. 题目描述如下图
    leetcode刷题日记之字符串转换整数。_第1张图片
  2. 题目分析
    看起来好长,真的很长,但是不用担心,我们要看清规律。先说一下本人的解题思路(提交所花费的时间还是比较长的)。一开始最开始想到的就是遍历,设立符号的标志,数字的标志。如果一开始是数字,那么将数字的标志设置成1,使用sum=sum*10+num 当遇到不是数字的字符直接跳出。如果一开始是符号,那么设置符号的标志为1,可能是正数也可能是负数,所以这里设置了负数的标志位。如果是负数,那么直接设置标志位为1。遍历完或者不满足条件跳出循环的时候,我们需要判断最终的result是否满足条件,如果不在最大最小值之间,那么按照最大最小值进行计算。
    3.实现的代码如下:
class Solution:
    def myAtoi(self, s: str) -> int:
        s=s.lstrip()
        fushu=0
        sum=0
        shuzi=0
        fuhao=0
        for i in range(len(s)):
            if i==0 and s[i]=="-":
                fushu=1
                fuhao=1
            elif i==0 and s[i]=="+":
                fuhao=1
            elif i==0 and s[i]=="+":
                fushu=0
                fuhao=1
            elif fuhao==1 and i==1 and s[i]=="0":
                shuzi=1
            elif i==0 and s[i]=="0":
                shuzi=1
                
            elif s[i]<='9' and s[i]>='0':
                sum=sum*10+int(s[i])
                shuzi=1
            elif shuzi==1:
                break
            elif i==1 and shuzi==0:
                break
            else:
                break
        if fushu==1 and shuzi==1:
            if sum*(-1)<-2**31:
                return -2**31
            else:
                return sum*(-1)
        elif shuzi==1:
            if sum>2**31-1:
                return 2**31-1
            else:
                return sum
        else:
            return 0



你可能感兴趣的:(leetcode,算法,python)