implementer la myAtoi(string s) fonction, qui convertit une chaine en entier signé 32 bits (similaire a la atoi fonction C/C++). L'algorithme pour myAtoi(string s) est le suivant: 1. Lisez et ignorez tout expace blanc en tete. 2.Verifiez si le caractere suivant(si iil n'est pas deja a la fin de la chaine) est '-' ou '+'. Lisez ce caractere si c'est le cas. Cela determine si le resultat final est respectivement negatif ou positif. Supposons que le resultat est positif si ni l'un ni l'autre n'est present. 3. Lisez ensuite les caracteres jusqu'au prochain caractere non numérique ou jusqu'a la fin de la saisie. le reste de la chaine est ignoré. 4. convertisser ces chiffre en nombre entiere. Si aucun chiffre n'a ete lu, alors l'entier est 0. Modifiez le signe si necessaire. 5. Si l'entier est en dehors de la plage entier signe 32 bits, bloquez l'entier pour quil reste dans la plage. 6. renvoie l'entier comme resiltat final
===============
using System; public class Solution { public int MyAtoi(string s) { int index = 0; // Ignorer les espaces blancs au début while (index < s.Length && s[index] == ' ') { index++; } // Déterminer le signe int sign = 1; if (index < s.Length && (s[index] == '+' || s[index] == '-')) { sign = (s[index++] == '-') ? -1 : 1; } // Lire les chiffres jusqu'à la fin de la saisie ou jusqu'au prochain caractère non numérique int result = 0; while (index < s.Length && Char.IsDigit(s[index])) { int digit = s[index++] - '0'; // Vérifier le débordement if (result > int.MaxValue / 10 || (result == int.MaxValue / 10 && digit > 7)) { return (sign == 1) ? int.MaxValue : int.MinValue; } result = result * 10 + digit; } return result * sign; } } class Program { static void Main(string[] args) { Solution solution = new Solution(); string input1 = "42"; Console.WriteLine(solution.MyAtoi(input1)); // Output: 42 string input2 = " -42"; Console.WriteLine(solution.MyAtoi(input2)); // Output: -42 string input3 = "4193 with words"; Console.WriteLine(solution.MyAtoi(input3)); // Output: 4193 string input4 = "words and 987"; Console.WriteLine(solution.MyAtoi(input4)); // Output: 0 string input5 = "-91283472332"; Console.WriteLine(solution.MyAtoi(input5)); // Output: -2147483648 } }
Aucun commentaire:
Enregistrer un commentaire