8. leetcode número entero conversión de cadenas del título (atoi)

título Descripción

Atoi a implementar una función, que puede convertir una cadena a un entero.

En primer lugar, la función se iniciará con un carácter de espacio descarta inútil si es necesario, hasta que el hallazgo al primer carácter no-espacio hasta ahora.

Cuando nos encontramos con el primer carácter no-espacio es un número positivo o negativo, la combinación de los símbolos lo más posible con números consecutivos hasta más tarde, como el signo de número entero; si el primer carácter no-espacio es figuras, que directamente después de los caracteres numéricos continuos se combinan para formar un entero.

Además de la cadena después de una parte entera válida también pueden existir caracteres adicionales, estos caracteres pueden ser ignorados, no deben afectar a una función.

Nota: si la cadena de caracteres en el primer carácter que no sea espacio no es una cadena de caracteres entero válido está vacío o contiene sólo la cadena de caracteres de espacio en blanco, entonces no tendrá que ser una función de la conversión.

En cualquier caso, si la función no puede convertir de manera efectiva, se devuelve 0.

Descripción:

Suponemos que el medio ambiente puede almacenar 32 bits de tamaño entero con signo, entonces el rango numérico [-231 231 a -1]. Si el valor excede este rango, volver INT_MAX (231 - 1) o INT_MIN (-231).

Ejemplo 1:

De entrada: "42"
de la salida: 42

Ejemplo 2:

De entrada: "-42"
de salida: -42
Explicación: un primer caracter no blanco '-', es un signo negativo.
Vamos a todos los digitales número negativo consecutivo y más tarde se combina tanto como sea posible, y, finalmente, conseguir -42.

Ejemplo 3:

De entrada: "4193 con las palabras"
de la salida: 4193
Explicación: convertir el apagado digital de '3', debido a que el siguiente carácter no es numérico.

Ejemplo 4:

De entrada: "palabras y 987"
de salida: 0
Explicación: una primera de carácter no en blanco 'w', pero no es un número positivo o número negativo.
Por lo tanto, la conversión no se puede realizar de manera eficaz.

código Python

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
Publicado 33 artículos originales · ganado elogios 3 · Vistas 5529

Supongo que te gusta

Origin blog.csdn.net/weixin_42990464/article/details/104875238
Recomendado
Clasificación