Je souhaite rechercher "s" dans la chaîne de caractères suivante "t".
filename.rb
s = 'AA'
t = 'abdeeAAbAAAbfde'
Normalement, je suis un imbécile qui a pensé: "Hé, je peux utiliser la méthode de comptage."
filename.rb
s = 'AA'
t = 'abdeeAAbAAAbfde'
puts t.count(s)
#Sortie attendue ➡︎ 3
#Sortie réelle ➡︎ 5
Non, je compte juste le nombre de A normalement. Avec la méthode count, même si vous donnez un ensemble de chaînes de caractères à l'argument, il semble qu'un caractère ou un caractère sera recherché.
En d'autres termes
Je veux compter les trois ci-dessus. (Transféré ...! Lol)
Si vous y réfléchissez en mâchant, la chaîne de caractères abdeeAAbAAAbfde Diviser en ab bd de ee eA AA Ab bA AA AA Ab bf fd de Il est bon de vérifier si elle correspond à la chaîne de caractères AA, de compter si elle est vraie et de ne pas compter si elle est fausse.
※point Spécifiez la plage en faisant bon usage de l'index de la chaîne de caractères
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
#Sortie attendue ➡︎ 3
#Sortie réelle ➡︎ 3
terminé!
Vous pouvez compter les chaînes en l'utilisant dans la classe string. Avec la méthode length (qui compte le nombre d'éléments lorsqu'il est utilisé dans la classe Array).
Si vous spécifiez une plage avec un argument, la chaîne de caractères de cette plage est renvoyée.
Je pense que la partie "comment supprimer les données nécessaires" est le point de cette fois. Je pense que la partie qui ne sort pas soudainement n'est pas encore l'esprit pour créer l'algorithme. Hmmm difficile.
Recommended Posts