Nehmen wir an, ich habe eine Zeichenfolge wie string= "aasmflathesorcerersnstonedksaottersapldrrysaahf"
. Wenn Sie es nicht bemerkt haben, finden Sie dort den Ausdruck "harry potter and the sorcerers stone"
(minus Leerzeichen).
Ich muss überprüfen, ob string
alle Elemente der Zeichenfolge enthält.
Einschließen funktioniert nicht mit einer gemischten Zeichenfolge.
Wie kann ich überprüfen, ob eine Zeichenfolge alle Elemente einer anderen Zeichenfolge enthält?
Sets und Array-Schnittpunkt berücksichtigen nicht wiederholte Zeichen, sondern einen Histogramm / Frequenzzähler tut:
%Vor% Schreiben Sie Ihre eigene Array#frequency
, wenn Sie die Facettenabhängigkeit nicht möchten.
Ich nehme an, dass, wenn die zu überprüfende Zeichenfolge "Zauberer" ist, string
beispielsweise drei "r" enthalten muss. Wenn ja, könntest du die Methode Array # Unterschied verwenden, die ich dem Ruby-Kern hinzugefügt habe.
Wenn die Zeichen des Ziels nicht nur in str
sein müssen, sondern in der gleichen Reihenfolge, könnten wir schreiben:
(oder !!(str =~ r) #=> true
)
Eine andere, wenn auch nicht unbedingt bessere Lösung, die sortierte Zeichenfelder und Teilzeichenfolgen verwendet:
Deine zwei Saiten gegeben ...
%Vor% Sie können Ihre Betreff-Zeichenfolge mit .chars.sort.join
...
Und dann eine Liste der zu suchenden Teilstrings erzeugen:
%Vor%Sie könnten alternativ den gleichen Satz von Teilstrings mit erzeugen Methode
%Vor%Und dann einfach überprüfen, ob jeder Such-Sub-String innerhalb der sortierten Betreff-String erscheint:
%Vor% Erstellen Sie ein zweidimensionales Array aus Ihrer string
-Bank, um jedem Buchstaben die Anzahl der Buchstaben zuzuordnen.
Erstellen Sie ein zweidimensionales Array aus der Harry Potter-Zeichenfolge auf die gleiche Weise.
Durchlaufen Sie beide und führen Sie Vergleiche durch.
Ich habe keine Erfahrung in Ruby, aber so würde ich anfangen, es in der Sprache zu lernen, die ich am meisten kenne, nämlich Java.