Array (3, 5, 1, 3, 5, 48, 4, 7, 13, 55, 65, 4, 7, 13, 32)
Die häufige Folge von Zahlen ist (3, 5) f=2 + (4, 7, 13) f=2
irgendeinen Algorithmus oder Pseudocode, um das zu finden?
Aktualisierung (1):
Wenn (7, 13)
auch das Vorkommen ist, wird es in das längste eingefügt, indem seine Häufigkeit aktualisiert wird, also
(4, 7, 13) f=3
und so weiter ...
Aktualisierung (2):
im Fall von (1,2,3,4,1,2,3,4,1,2,7,8,7,8,3,4,3,4,1,2)
sollte die Ausgabe (1,2,3,4)
& amp; (3,4,1,2)
& amp; (7,8)
, um klarzustellen, dass jede Zahl ein Wort ist und Sie die häufigsten Ausdrücke finden möchten
Es ist also üblich, dieselben Wörter in vielen Phrasen zu sehen, aber wenn eine Phrase eine Unterzeichenfolge für andere
istPhrase (n) sollten nicht als Phrase betrachtet werden, sondern aktualisieren die Häufigkeit jeder Phrase einschließlich
** EDIT **: etwas bessere Implementierung, gibt nun auch Frequenzen zurück und hat einen besseren Sequenzfilter.
%Vor%Testfall
%Vor%** BEARBEITEN **: Hier ist ein Update für die Funktion. Es wurde fast komplett neu geschrieben ... sag mir, ob das das ist, wonach du gesucht hast. Ich fügte auch eine Redundanzprüfung hinzu, um zu verhindern, dass die gleiche Sequenz oder Untersequenz zweimal gezählt wird.
%Vor%In Python3
%Vor%Müssen Sie die (7,13) und die (4,7) ausfiltern? Was passiert, wenn in der Sequenz auch (99, 7, 14) vorkommt?
a Counter
ist genau wie ein Hash, der verwendet wird, um zu verfolgen, wie oft wir jede Teilzeichenfolge sehen
Die beiden verschachtelten for-Schleifen erzeugen alle Teilstrings von T
, wobei count_hash
verwendet wird, um die Anzahl jedes Teilstrings zu akkumulieren.
Die final for-Schleife filtert alle Teilstrings, die nur einmal vorkamen
Hier ist eine Version mit einem Filter
%Vor%Die Ausgabe ist
%Vor%Deshalb habe ich gefragt, wie die Filterung für die Sequenz funktionieren soll, die ich in den Kommentaren angegeben habe
Ok, nur um die Diskussion zu beginnen.