Botón de encendido [-] 8. Pequeño número entero conversión de cadenas práctica diaria (atoi) (Python)

número entero conversión 8. cadena (atoi)

enlaces a los temas: https://leetcode-cn.com/problems/string-to-integer-atoi/
Dificultad: Media

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:
Se supone que el tamaño del entorno puede almacenar entero con signo de 32 bits, entonces el rango de valores de [-2 31 es 2 31 es - 1] Si el valor excede este rango, volver INT_MAX (2 31 es -. 1) o INT_MIN (-2 31 es ).

Ejemplos

Ejemplo 1:
Entrada: "42"
de salida: 42

Ejemplo 2:
Entrada: "-42"
de salida: -42
explicó: el 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:
Entrada: "4193 palabras con"
Salida: 4193
Explicación: la conversión de la OFF digital de '3', debido a que el siguiente carácter no es numérico.

Ejemplo 4:
Entrada: "987 palabras y"
salida: 0
Explicación: el primer carácter no-espacio es una '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.

Ejemplo 5:
Entrada: "-91,283,472,332"
de salida: -2147483648
explicación: el número "-91,283,472,332" En el rango de número entero con signo de 32 bits.
Así que volver INT_MIN (-231).

la implementación del código

class Solution:
    def myAtoi(self, str: str) -> int:
        # str = str.replace(' ','')
        flag = 1    # 1表示正数
        head_num = 1
        num = 0
        for char in str:
            if char == ' ':
                if head_num == 1:
                    continue
                break
            elif char <= '9' and char >= '0' or char == '-' or char == '+':
                
                if char == '-' or char == '+':
                    if head_num == 0:
                        break
                    flag = -1 if char == '-' else 1
                    head_num = 0 
                else:
                    num = num*10 + int(char)
                    head_num = 0 
            else:
                break        
            
            
        if flag*num > 2**31-1:
            return flag*2**31-1
        elif flag*num < -2**31:
            return flag*2**31
        return flag*num
Publicado 44 artículos originales · ganado elogios 5 · Vistas 4466

Supongo que te gusta

Origin blog.csdn.net/ljb0077/article/details/104727416
Recomendado
Clasificación