zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):008-String to Integer (atoi)

     

    题目来源:

    https://leetcode.com/problems/string-to-integer-atoi/


    题意分析:

          这道题也是简单题,题目意思是要将字符串转化成int。比如‘123’转成123.


    题目思路:

         由于有一些其他的输入直接用int()函数肯定是不可以的。比如说‘123b’用int()函数肯定是报错的。那么我们可以用一个ans = 0来初始化得到的int,从第一个字符s开始判断,得到新的ans是ans = ans*10 + int(s)。题目要注意的是一些特殊情况:

    1.刚开始的空格,字符开始的空格字符忽略不算;

    2.‘-’和‘+’字符,第一次出现的这两个字符可以代表得到的int的正负;

    3.上述情况以外的所有非‘0’-‘9’的字符,出现这些字符的时候等于出现结束符;

    4.得到的ans超过32位int最大长度。

    只要在代码中加上几个bool判断符,字符的一些比较和ans的大小比较一下,答案就出来了。


    代码(python):

     1 class Solution(object):
     2     def myAtoi(self, str):
     3         """
     4         :type str: str
     5         :rtype: int
     6         """
     7         size = len(str)
     8         if size == 0:
     9             return 0
    10         ans = 0
    11         b = True
    12         b1 = True
    13         positive = True
    14         i = 0
    15         while i < size:
    16             if str[i] != ' ':
    17                 b1 = False
    18             if str[i] == ' ' and b1:
    19                 i += 1
    20                 continue
    21             if b:
    22                 if str[i] =='-':
    23                     positive = False
    24                     i += 1
    25                     b = False
    26                     continue
    27                 if str[i] == '+':
    28                     i += 1
    29                     b = False
    30                     continue
    31             if str[i]>= '0' and str[i] <= '9':
    32                 ans = ans*10 + int(str[i])
    33                 if ans > 2147483647 and positive:
    34                     return 2147483647
    35                 if ans > 2147483648 and not positive:
    36                     return - 2147483648
    37             else:
    38                 break
    39             i += 1
    40         if positive:
    41             return ans
    42         return -1 * ans
    View Code

    转载请注明出处:http://www.cnblogs.com/chruny/p/4801655.html

  • 相关阅读:
    802.11帧
    art中的部分内容,留着慢慢研究
    802.11基础知识
    opkg
    openwrt生成备份文件
    lua中获取时间
    php学习四:数组(一)
    php学习三:函数
    php学习二:表达式
    php学习一:语法规则
  • 原文地址:https://www.cnblogs.com/chruny/p/4801655.html
Copyright © 2011-2022 走看看