Frage

Ich brauche eine Sammlung, die wie ein Satz ist. Im Grunde bin ich das Scannen eine lange Zeichenfolge und Hinzufügen von Wörtern zu der Sammlung, aber ich möchte in der Lage sein zu erkennen, wenn es Duplikate sind.

Wenn Sätze nicht verfügbar sind, was ist der effizienteste Weg, dies in Ruby zu tun? Brownie Punkte zum Beispiel Code.

War es hilfreich?

Lösung

Aus dem Dokumentation :

a = [ "a", "a", "b", "b", "c" ]
a.uniq  #gets you   ["a", "b", "c"]
a.uniq.uniq! #gets you nil (no duplicates :)

Andere Tipps

Es gibt eine Set-Klasse in Ruby. Sie können es wie so verwenden:

require 'set'

set = Set.new

string = "a very very long string"

string.scan(/\w+/).each do |word|
  unless set.add?( word )
    # logic here for the duplicates
  end
end

Obwohl ich mich, wenn Sie die Instanzen in diesem Fall zählen würden wollen das folgende Beispiel besser wäre:

instances = Hash.new { |h, k| h[k] = 0 }

string.scan(/\w+/).each do |word|
  instances[word] += 1
end

Schauen Sie sich diesen Link / core / classes / Set.html über bei ruby-doc.org

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top