Comme je résolvais des problèmes dans le guide des développeurs Google Tech pendant la formation, Notez ce que vous pensez. Problème résolu cette fois
Lors de l'extrait de l'énoncé du problème
Given a string, return the sum of the numbers appearing in the string, ignoring all other characters. A number is a series of 1 or more digit chars in a row. (Note: Character.isDigit(char) tests if a char is one of the chars '0', '1', .. '9'. Integer.parseInt(string) converts a string to an int.)
Et cela. En résumé, il dit: "Retirez uniquement les nombres de la chaîne reçue et ajoutez-les." Je pense que c'est difficile à comprendre si ce ne sont que des phrases, Il semble que la sortie devrait être la suivante (implémenter la méthode sumNumbers)
sumNumbers("abc123xyz") → 123 sumNumbers("aa11b33") → 44 sumNumbers("7 11") → 18
Comme vous pouvez le voir sur le ↑, S'il y a une chaîne ou un espace entre les nombres, vous devez ajouter chaque nombre.
Tout d'abord, j'ai identifié les éléments qui peuvent être inclus dans la chaîne de caractères.
Sur la base de ce qui précède, nous avons adopté l'approche suivante cette fois.
Le code final ressemble à ceci:
sample.java
class Test1{
public static void main(String args[]){
//Pour le contrôle de fonctionnement
System.out.println(sumNumbers("abc123xyz"));
System.out.println(sumNumbers("aa11b33"));
System.out.println(sumNumbers("7 11"));
}
public static int sumNumbers(String str) {
// 1.Convertir tout sauf les nombres en espaces demi-largeur
String buf = str.replaceAll("[^0-9]", " ");
// 2.Stocker dans un tableau séparé par des espaces
String list[] = buf.split(" ");
int sum = 0;
// 3.Ajouter tous les éléments sauf vides dans le tableau
for(int i = 0; i < list.length; i++){
if (!(list[i].isEmpty())){
sum = sum + Integer.parseInt(list[i]);
}
}
return sum;
}
}
Si vous avez quelque chose comme "Je devrais faire ça plus!", J'aimerais avoir de vos nouvelles!
J'écris généralement en Ruby, j'ai donc essayé de le résoudre également en Ruby.
sample.rb
def sumNumbers(str)
str.gsub(/[^0-9]/," ")
.split(" ")
.compact
.reject(&:empty?)
.sum{|v| v.to_i}
end
#Pour le contrôle de fonctionnement
puts sumNumbers("abc123xyz")
puts sumNumbers("aa11b33")
puts sumNumbers("7 11")
Avec ruby, vous pouvez écrire en utilisant une chaîne de méthodes, donc c'est amusant!