8. leetcode title string conversion integer (atoi)

Title Description

Atoi you to implement a function, it can convert a string to an integer.

First, the function will begin with a space character discard useless if necessary, until the find to the first non-space character so far.

When we find the first non-space character is a positive or negative number, the combination of the symbols as much as possible with consecutive numbers up later, as the sign of integer; if the first non-space character is figures, which directly after the continuous numeric characters are combined to form an integer.

In addition to the string after a valid integer part may also exist extra characters, these characters can be ignored, they should not affect a function.

Note: if the character string in the first non-space character is not a valid integer character string is empty or contains only white space character string, then you will not need to be a function of conversion.

In any case, if the function can not effectively convert, 0 is returned.

Description:

We assume that the environment can store 32-bit signed integer size, then the numerical range [-231 231--1]. If the value exceeds this range, return INT_MAX (231 - 1) or INT_MIN (-231).

Example 1:

Input: "42"
Output: 42

Example 2:

Input: "-42"
Output: -42
Explanation: a first non-blank character '-', it is a negative sign.
We will all digital consecutive negative number and later combined as much as possible, and finally get -42.

Example 3:

Input: "4193 with words"
Output: 4193
Explanation: converting the digital OFF '3', because the next character is not numeric.

Example 4:

Input: "words and 987"
Output: 0
Explanation: a first non-blank character 'w', but it is not a positive number or negative number.
Therefore, the conversion can not be performed effectively.

python code

class Solution:
    def myAtoi(self, str: str) -> int:
        mathList=['-','+','0','1','2','3','4','5','6','7','8','9']
        str2 = str.lstrip()
        try:
            if  len(str2)==0 or str2[0] not in mathList:
                return 0
            else:
                for i in range(1, len(str2)):
                    if str2[i] not in mathList[2:]:
                        str2 = str2[:i]
                        break
                ans = int(str2)
                if ans < 2**31-1 and ans > -2**31:
                    return ans
                else:
                    return 2**31-1 if ans > 0 else -2**31
        except:
            return 0
Published 33 original articles · won praise 3 · Views 5529

Guess you like

Origin blog.csdn.net/weixin_42990464/article/details/104875238