Bouton d'alimentation [-] 8. Petit entier de conversion de chaîne de pratique quotidienne (atoi) (python)

8. entier de conversion de chaîne (atoi)

Liens Sujet: https://leetcode-cn.com/problems/string-to-integer-atoi/
Difficulté: Moyenne

Titre description

Atoi vous de mettre en œuvre une fonction, il peut convertir une chaîne en entier.

Tout d'abord, la fonction commencera par un espace inutile défaussez si nécessaire, jusqu'à la découverte du premier caractère non-espace jusqu'à présent.

Quand nous trouvons le premier caractère non-espace est un nombre positif ou négatif, la combinaison des symboles autant que possible avec des numéros consécutifs plus tard, comme le signe d'entier, si le premier caractère non-espace figures, directement après les caractères numériques continues sont combinés pour former un nombre entier.

En plus de la chaîne après une partie entière valide peut également exister des caractères supplémentaires, ces caractères peuvent être ignorés, ils ne devraient pas affecter une fonction.

Note: si la chaîne de caractères dans le premier caractère non-espace n'est pas une chaîne de caractères entier valide est vide ou ne contient que chaîne de caractères de l'espace blanc, alors vous aurez pas besoin d'être une fonction de conversion.

Dans tous les cas, si la fonction ne peut pas convertir efficacement, 0 est retourné.

Description:
On suppose que la taille de l'environnement peut stocker entier signé de 32 bits, alors la plage de valeur de [-2 31 est 2 31 est - 1] Si la valeur est supérieure à cette gamme, le rendement INT_MAX (2 31 est -. 1) ou INT_MIN (-2 31 est ).

Exemples

Exemple 1:
Entrée: "42"
Sortie: 42

Exemple 2:
Entrée: « -42 »
Output: -42
expliqué: le premier caractère non blanc « - », il est un signe négatif.
Nous autant que possible tout nombre de négatifs consécutifs numériques et plus tard combiné, et enfin obtenir -42.

Exemple 3:
Entrée: « 4193 mots avec »
Sortie: 4193
Explication: conversion OFF numérique « 3 », parce que le caractère suivant est pas numérique.

Exemple 4:
Entrée: « 987 mots et »
Output: 0
Explication: le premier caractère non-espace est un « w », mais pas un nombre positif ou négatif.
Par conséquent, la conversion ne peut être effectuée de manière efficace.

Exemple 5:
Entrée: « -91.283.472.332 »
Sortie: -2147483648
explication: le nombre « -91283472332 » sur la plage de nombre entier signé 32 bits.
retour Alors INT_MIN (-231).

code mise en œuvre

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
Publié 44 articles originaux · louange gagné 5 · Vues 4466

Je suppose que tu aimes

Origine blog.csdn.net/ljb0077/article/details/104727416
conseillé
Classement