Bei zwei Zeichenfolgen, einer übergeordneten Zeichenfolge und einer Abfragezeichenfolge, müssen Sie bestimmen, wie oft die Abfragezeichenfolge oder ein Anagramm der Abfragezeichenfolge verwendet werden soll . wird in der übergeordneten Zeichenfolge bei einer Suche mit Groß- und Kleinschreibung angezeigt.
Beispiele für Verhalten
Eingabe 1
AdnBndAndBdaBn
dAn
Ausgabe 1
4
Erläuterung Die Teilzeichenfolgen sind unten fett hervorgehoben:
Adn BndAndBdaBn
AdnB ndA ndBdaBn
AdnBn dAn dBdaBn
AdnBnd und BdaBn
Beachten Sie, dass bei der Suche bei allen Suchvorgängen zwischen Groß- und Kleinschreibung unterschieden werden muss.
Eingabe 2
AbrAcadAbRa
cAda
Ausgabe 2
2
Dies muss nur für Standard-ASCII funktionieren. Dies ist Code-Golf, daher wird die kürzeste Anzahl von Zeichen genehmigt. Bitte posten Sie auch eine nicht Golfversion Ihres Codes zusammen mit der Golfversion.
quelle
abacacaba
aac
Antworten:
Pyth,
1110 Bytes1 Byte Golf dank @Jakube.
Demonstration.
Nimmt die Abfragezeichenfolge, gefolgt von der übergeordneten Zeichenfolge in einer neuen Zeile.
Ungolfed:
quelle
CJam, 13 Bytes
(12 Bytes, wenn Überlappung erlaubt ist)
Die Eingabe lautet wie folgt:
dh
Vielen Dank an Dennis für das Speichern von 3 Bytes im überlappenden Szenario
Probieren Sie es hier online aus
quelle
ll1$,ew:$\$e=
l$_,lew:$\e=
Aber nicht sicher, ob dies jetzt gültig ist, da OP gesagt hat, dass Überlappungen nicht zulässig sind. Lassen Sie mich sehen, ob ich meine aktuelle reduzieren kann.JavaScript ES6, 95 Byte
Dies ist eine Funktion, die zwei Argumente wie folgt akzeptiert :
f(parent,query)
.Es durchläuft alle Teilzeichenfolgen der übergeordneten Zeichenfolge mit der Länge der Abfragezeichenfolge und sortiert sie. Wenn sie mit der sortierten Abfragezeichenfolge identisch sind, wird sie erhöht
n
. Das Sortieren von Zeichenfolgen ist ärgerlich, da sie in ein Array konvertiert, sortiert und wieder in eine Zeichenfolge konvertiert werden müssen. Ungolfed und testbarer Code unten.quelle
Haskell,
7768 BytesVerwendungszweck:
So funktioniert es: Übergeordnete Zeichenfolge ist
p
, Abfragezeichenfolge ists
.tails
Erstellt eine Liste seiner Parameter, wobei nacheinander das erste Element entfernt wird, ztails "abcd" -> ["abcd","bcd","cd","d",""]
.x
Nehmen Sie für jedes Element dieser Liste ein,1
wenn die sortierten erstenn
Elemente (wobein
die Länge von ists
) gleich den sortierten sinds
. Summiere die1
s.Bearbeiten:
tails
statt expliziter Rekursionquelle
Python, 61 Bytes
Dies ist ein rekursiver Algorithmus. Es wird geprüft, ob die Anfangszeichen der übergeordneten Zeichenfolge nach dem Sortieren mit der sortierten Abfragezeichenfolge übereinstimmen. Dann rekursiv auf der übergeordneten Zeichenfolge, wobei das erste Zeichen entfernt wird. Es wird beendet, wenn die übergeordnete Zeichenfolge leer ist.
quelle
Python 2,
7670 BytesDiese Lambda-Funktion vergleicht iterativ jeden sortierten Teilstring mit dem Ziel-Teilstring. Die Übereinstimmungen werden gezählt und zurückgegeben.
Der Code ohne Wolf:
und die Testausgabe:
quelle
Python 2,
124118 BytesProbieren Sie es hier aus
Dies ist eine anonyme Lambda-Funktion. Es kann wahrscheinlich noch weiter Golf gespielt werden.
Ungolfed:
quelle
f('aaa','aa')
.import re,itertools as i
spart 6 Zeichen. (Ich habe vorher nicht gewusst, dass es funktioniert.)