Y at-il un moyen facile de transformer un int en un tableau d'ints de chaque chiffre?
Dire que j'ai
var i = 987654321;
Est-il un moyen facile d'obtenir un tableau de chiffres, l'équivalent de
var is = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
sans .ToString()
ing et à parcourir les caractères avec int.Parse(x)
?
source d'informationauteur Andrew Bullock
Vous devez vous connecter pour publier un commentaire.
Alternative sans récursivité:
Je sais qu'il y a probablement de meilleures réponses que cela, mais voici une autre version:
Vous pouvez utiliser
yield return
pour retourner les chiffres dans l'ordre croissant (en fonction du poids, ou peu importe son nom).Une autre alternative qui n'utilise pas la récursivité et utilise une Pile qui évite de réaffectation sur chaque insert (au moins pour les 32 premiers chiffres):
Et oui, cette méthode fonctionne également pour les 0 et les nombres négatifs.
Il est intéressant de noter, donner cet algorithme un nombre négatif -123456 et vous obtiendrez { -1, -2, -3, -4, -5, -6}
Mise à jour: passée de l'utilisation de la Liste de Pile car cela donne automatiquement le bon ordre.
En bref: l'utilisation de la boucle de diviser le nombre modulo 10 (%) pour obtenir le rappel (chaque chiffre) et le mettre dans un tableau.
Chaînes et peut plaisir (quelques-uns des autres options serait plus rapide... mais c'est assez facile)
Ce ne convertir en chaîne de caractères et itérer sur les personnages, mais il le fait en sorte de automatiquement et dans un one-liner: