Ich möchte nach "s" aus der folgenden Zeichenkette "t" suchen.
filename.rb
s = 'AA'
t = 'abdeeAAbAAAbfde'
Normalerweise bin ich ein Dummkopf, der dachte: "Hey, ich kann mit der Zählmethode gehen."
filename.rb
s = 'AA'
t = 'abdeeAAbAAAbfde'
puts t.count(s)
#Erwartete Leistung ➡︎ 3
#Istleistung ➡︎ 5
Nein, ich zähle normalerweise nur die Anzahl von A. Selbst wenn Sie dem Argument eine Reihe von Zeichenfolgen zuweisen, wird bei der count-Methode anscheinend ein Zeichen oder ein Zeichen durchsucht.
Mit anderen Worten
Ich möchte die obigen drei zählen. (Übertragen ...! Lol)
Wenn Sie beim Kauen darüber nachdenken, wird die Zeichenkette abdeeAAbAAAbfde Teilen Sie in ab bd de ee eA AA Ab bA AA AA Ab bf fd de Es ist gut zu überprüfen, ob es mit der Zeichenfolge AA übereinstimmt, zu zählen, ob es wahr ist, und nicht zu zählen, wenn es falsch ist.
※Punkt Geben Sie den Bereich an, indem Sie den Index der Zeichenfolge gut nutzen
filename.rb
s = 'AA'
t = 'abdeeAAbAAAbfde'
result = 0
(0..(t.size - s.size)).each do |i|
substring = t.slice(i, s.size)
if substring == s
result += 1
end
end
puts result
#Erwartete Leistung ➡︎ 3
#Tatsächliche Ausgabe ➡︎ 3
erledigt!
Sie können Zeichenfolgen zählen, indem Sie sie in der Zeichenfolgenklasse verwenden. Zusammen mit der Längenmethode (die die Anzahl der Elemente zählt, wenn sie in der Array-Klasse verwendet werden).
Wenn Sie einen Bereich mit einem Argument angeben, wird die Zeichenfolge dieses Bereichs zurückgegeben.
Ich denke, der Teil "wie man die notwendigen Daten herausschneidet" ist der Punkt dieser Zeit. Ich denke, dass der Teil, der nicht plötzlich herauskommt, noch nicht der Verstand ist, den Algorithmus zu erstellen. Hmmm schwer.
Recommended Posts