[JAVA] Ich habe versucht, das Problem des Google Tech Dev Guide zu lösen

Einführung

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

Problem

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.

Ich habe versucht, es sofort zu lösen

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.

  1. Konvertieren Sie alle nicht numerischen Elemente in leer
  2. In einem durch Leerzeichen getrennten Array speichern
  3. Fügen Sie dem Array alle bis auf leere Elemente hinzu

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!

Bonus

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

Ich habe versucht, das Problem des Google Tech Dev Guide zu lösen
Ich habe versucht, das Problem der "mehrstufigen Auswahl" mit Ruby zu lösen
Ich habe versucht, das Paiza-Kampagnenproblem "Herausforderung von Phantomdieb 813" zu lösen.
Ich habe versucht, das Problem mit der Ruby-Karaoke-Maschine zu lösen (es gibt ein Beispiel für die Antwort).
Ich habe versucht, das Problem mit dem Ruby-Bonusgetränk zu lösen (es gibt ein Beispiel für die Antwort).
[Java] Ich habe versucht, Paizas B-Rang-Problem zu lösen
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby zu lösen (Zeitlimit 10 Minuten).
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich habe die grundlegende Grammatik von Ruby kurz zusammengefasst
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich habe versucht, die Methode zu erklären
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ich habe versucht, AOJs binäre Suche zu lösen
Ich habe versucht, das Iterator-Muster zu implementieren
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Ich habe versucht, die Reflexmessanwendung im Google Play Store zu veröffentlichen
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen
Ich habe versucht, die Sitzung in Rails zu organisieren
C # (Grund der Kapselung)
Ich möchte den Inhalt der Absicht var_dump
Ich habe versucht, Tomcat so einzustellen, dass das Servlet ausgeführt wird.
[Java] Versuchen Sie, das Fizz Buzz-Problem zu lösen
Ich habe versucht, den Profiler von IntelliJ IDEA zu verwenden
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Ich habe versucht, die Infrastrukturtechnologie der Ingenieure heutzutage mit dem Kochen zu vergleichen.
Ich habe versucht, die Server-Push-Funktion von Servlet 4.0 zu verwenden
Ich habe versucht, den Betrieb der http-Anfrage (Put) mit dem Talented API Tester zu überprüfen
Ich war süchtig nach der Aufzeichnung des zugehörigen Modells
Ich möchte die Antwort der Janken-App wissen
Ich habe versucht, AOJs Small, Large oder Equal zu lösen
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich habe versucht, den Mechanismus von Emscripten mit einem deutschen Löser zu untersuchen
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Ich möchte die Bildlaufposition von UITableView zurückgeben!
Ich habe die topologische Sortierung nicht verstanden, also habe ich sie nachgeschlagen und in BFS implementiert und dann versucht, das AtCoder-Problem zu lösen.
Ich habe mir die Rosen von Versailles angesehen und versucht, das Schlusslied in Java zu reproduzieren
Ich habe versucht, die Beispielanwendung gemäß der Idee des Buches "Micro Service Architecture" in einen Mikrodienst zu verwandeln.
Da das Lesen von JdbcCodeList von TERASOLUNA langsam ist, habe ich versucht, mehrere gleichzeitig zu registrieren.
Ich habe versucht, die Asset-Management-Anwendung mit dem Emulator des verteilten Hauptbuchs Scalar DLT zu berühren
[Für Swift-Anfänger] Ich habe versucht, den chaotischen Layoutzyklus von ViewController und View zusammenzufassen
Ich habe versucht, die Cache-Funktion von Application Container Cloud Service in der lokalen Umgebung zu entwickeln
Ich habe versucht, die ähnliche Funktion durch asynchrone Kommunikation zu implementieren
Ich habe versucht, Rubys "Klassen" -Probleme zu sammeln und zu lösen.
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.