Da ich während des Trainings Probleme im Google Tech Dev Guide gelöst habe, Notieren Sie sich, was Sie denken. Problem diesmal gelöst
Beim Auszug aus der Problemstellung
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.)
Und das. Zusammenfassend heißt es: "Nehmen Sie nur die Zahlen aus der empfangenen Zeichenfolge heraus und fügen Sie sie hinzu." Ich denke, es ist schwer zu verstehen, wenn es nur Sätze sind, Es scheint, dass die Ausgabe wie folgt sein sollte (implementieren Sie die sumNumbers-Methode)
sumNumbers("abc123xyz") → 123 sumNumbers("aa11b33") → 44 sumNumbers("7 11") → 18
Wie Sie aus dem ↑ sehen können, Wenn zwischen den Zahlen eine Zeichenfolge oder ein Leerzeichen steht, müssen Sie jede Zahl hinzufügen.
Zuerst habe ich die Elemente identifiziert, die in der Zeichenfolge enthalten sein können.
Basierend auf dem oben Gesagten haben wir diesmal den folgenden Ansatz gewählt.
Der endgültige Code sieht folgendermaßen aus:
sample.java
class Test1{
public static void main(String args[]){
//Zur Funktionsprüfung
System.out.println(sumNumbers("abc123xyz"));
System.out.println(sumNumbers("aa11b33"));
System.out.println(sumNumbers("7 11"));
}
public static int sumNumbers(String str) {
// 1.Konvertieren Sie alles außer Zahlen in Leerzeichen halber Breite
String buf = str.replaceAll("[^0-9]", " ");
// 2.In einem durch Leerzeichen getrennten Array speichern
String list[] = buf.split(" ");
int sum = 0;
// 3.Fügen Sie dem Array alle bis auf leere Elemente hinzu
for(int i = 0; i < list.length; i++){
if (!(list[i].isEmpty())){
sum = sum + Integer.parseInt(list[i]);
}
}
return sum;
}
}
Wenn Sie so etwas wie "Ich sollte das mehr tun!" Haben, würde ich gerne von Ihnen hören!
Normalerweise schreibe ich in Ruby, also habe ich versucht, es auch in Ruby zu lösen.
sample.rb
def sumNumbers(str)
str.gsub(/[^0-9]/," ")
.split(" ")
.compact
.reject(&:empty?)
.sum{|v| v.to_i}
end
#Zur Funktionsprüfung
puts sumNumbers("abc123xyz")
puts sumNumbers("aa11b33")
puts sumNumbers("7 11")
Mit Ruby können Sie mithilfe einer Methodenkette schreiben, es macht also Spaß!
Recommended Posts