Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]

Einführung

Als Teil des Ruby-Lernens werden wir "Algorithm Practical Test" herausfordern. Wir werden das, was wir beim Lernen gelernt haben, zu diesem Zweck ausgeben. Diesmal aus der 6. Frage (DoubleCamelCase Sort) von "1st Algorithm Practical Test". 1. Frage zum praktischen Test des Algorithmus in der Vergangenheit

Dieses Mal möchte ich zusammenfassen, was ich anhand der hilfreichen Antworten lernen konnte.

Problem

Die Zeichenfolge S ist gegeben. Dies ist eine Verkettung eines oder mehrerer Wörter (ohne Leerzeichen dazwischen). Hier hat jedes Wort zwei oder mehr Zeichen, nur das erste und das letzte Zeichen sind obere englische Buchstaben und alle anderen Buchstaben sind untere englische Buchstaben.

Zwang -S ist eine Zeichenkette mit einer Länge von 2 oder mehr und 100.000 oder weniger. -Jeder Buchstabe von S ist ober- oder unteralphabetisch. ・ S ist eine Verkettung von Wörtern, wie in der Problemstellung beschrieben.

Die Eingabe erfolgt in folgender Form.

S

Eingabebeispiel
FisHDoGCaTAAAaAAbCAC
Ausgabebeispiel
=> AAAaAAbCACCaTDoGFisH

Antworten

Hier ist die Antwort, auf die ich mich diesmal beziehen werde.

puts gets.scan(/[A-Z][a-z]*[A-Z]/).sort_by(&:upcase).join

Ordnen Sie die empfangenen Zeichenfolgen als Elemente für jedes Wort an. Nach dem Sortieren mit der Methode sort_by werden alle Elemente des Arrays mit der Join-Methode verkettet und ausgegeben.

Das Folgende ist eine Zusammenfassung jeder Methode und des Ausdrucks in regulären Ausdrücken.

Scan-Methode

Das in () angegebene Muster wird wiederholt mit dem Objekt abgeglichen, und der übereinstimmende Teilstring wird als Array zurückgegeben.

p "test".scan(/../)
#=> ["te", "st"]
p "test".scan("t")
#=> ["t"]
p "testet".scan(/te./)
#=> ["tes", "tet"]

Es ist die beste Methode für Fälle wie diesen, die sich mit Wörtern befassen, die mit Kapital beginnen und mit Kapital enden.

Teil mit regulärem Ausdruck

Die Wörter, die dieses Mal behandelt werden, werden wie folgt in regulären Ausdrücken ausgedrückt.

/[A-Z][a-z]*[A-Z]/

/ / //で囲むことで正規表現オブジェクトを生成することが出来ます。 Mit anderen Worten, es ist eine Deklaration, dass "das, was in // eingeschlossen ist, ein regulärer Ausdruck ist".

[ ] Der Teil zwischen den eckigen Klammern [] wird als Zeichenklasse bezeichnet. Eine Aufzählung von einem oder mehreren Zeichen, die mit einem Zeichen übereinstimmen (1 von 0-9 oben).

[A-Z] Stellt einen einzelnen Großbuchstaben dar.

[a-z] Stellt einen einzelnen unteren Buchstaben dar.

Es ist ein Metazeichen, das bedeutet, dass der vorherige Ausdruck 0 oder mehrmals wiederholt wird. In diesem Fall bedeutet dies, dass niedrigere Buchstaben mindestens 0 Mal wiederholt werden. Wenn ein englisches Wort mit drei oder mehr Zeichen angezeigt wird, bedeutet dies, dass der untere Teil immer zwischen dem oberen Teil liegt.

Jetzt können Sie das Wort gemäß der Problemspezifikation abgleichen.

sort_by-Methode

Es vergleicht den Inhalt des Arrays, sortiert es und erstellt ein neues Array im sortierten Zustand. In () wird für einen korrekten Vergleich die Großbuchstabenmethode auf jedes Element angewendet, und alle Großbuchstaben werden vor dem Vergleich verwendet.

p ["AA", "AC", "AaA"].sort_by(&:upcase)
#=>["AA", "AaA", "AC"]

Join-Methode

Gibt eine Zeichenfolge zurück, in der die Elemente des Arrays mit dem in Klammern () dazwischen angegebenen Trennzeichen verknüpft sind. Wenn () nicht beschrieben wird, wird es ohne Trennzeichen verkettet.

p ["AA", "AaA", "AC"].join(",")
#=>AA,AaA,AC
p ["AA", "AaA", "AC"].join
#=>AAAaAAC

Schließlich

Das Obige ist eine Zusammenfassung der Methoden, die in der sechsten Frage (DoubleCamelCase Sort) des "1st Algorithm Practical Test" gelernt wurden. Ich möchte reguläre Ausdrücke und verschiedene Methoden verwenden, damit ich eine einfache und leicht verständliche Antwort geben kann, wie ich sie dieses Mal erwähnt habe.

Wenn Sie Fehler haben, wäre ich Ihnen dankbar, wenn Sie darauf hinweisen könnten.

Recommended Posts

Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]
Ruby mit AtCoder 9 lernen [1. Algorithmus Praktischer Test 3.] Sortieren von Array-Elementen
Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung
Ruby-Lernen mit AtCoder 8 [1. Algorithmus-Praxistest-Doppelprüfung] Regulärer Ausdruck
Ruby mit AtCoder 14 lernen [3. Algorithmus Praktischer Test Sprinkler] Hash-Erstellung, Schlüssel- / Wertschöpfung
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Ruby mit AtCoder lernen 11 So erhalten Sie häufig verwendete Standardeingaben
Lösen mit Ruby AtCoder ABC177 D Union Find
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] Controller-Test mit RSpec
[Ruby on Rails] Modelltest mit RSpec
Ruby mit AtCoder lernen 12 So verwenden Sie die Standardausgabe richtig (p / put / print)