Je voulais vérifier si une chaîne est palindrome ou n'utilise pas de code Ruby.
Je suis un partant en Ruby donc pas trop connu avec le string methods
en Ruby
def check_palindromic(variable)
if variable.reverse == variable #Check if string same when reversed
puts "#{ variable } is a palindrome."
else # If string is not the same when reversed
puts "#{ variable } is not a palindrome."
end
end
Si vous n'êtes pas familiarisé avec les méthodes String
de Ruby, vous devriez jeter un coup d'œil à la documentation , c'est très bien. La réponse de Mithun vous a déjà montré le principe de base, mais comme vous êtes nouveau dans Ruby, il y a quelques autres points à garder à l'esprit:
*) Si vous avez une méthode de prédicat, il est d'usage de la nommer avec un point d'interrogation final, par exemple. palindrome?
.
*) Les expressions booléennes sont évaluées en booléens. Vous n'avez donc pas besoin de renvoyer explicitement true
ou false
. Par conséquent, une version idiomatique courte serait
def palindrome?(str)
str == str.reverse
end
*) Puisque les classes de Ruby sont ouvertes, vous pouvez ajouter ceci à la classe string:
class String
def palindrome?
self == self.reverse
end
end
*) Si vous ne voulez pas monkey-patch String
, vous pouvez définir directement la méthode sur un seul objet (ou utiliser un module et Object # extend ):
foo = "racecar"
def foo.palindrome?
self == self.reverse
end
*) Vous voudrez peut-être rendre la vérification du palindrome un peu plus complexe, par exemple. quand il s’agit de cas ou d’espace, vous pouvez également détecter des phrases palindromiques, des mots en majuscules comme "Racecar", etc.
pal = "Never a foot too far, even."
class String
def palindrome?
letters = self.downcase.scan(/\w/)
letters == letters.reverse
end
end
pal.palindrome? #=> true
La solution récursive montre comment les chaînes peuvent être indexées dans Ruby:
def palindrome?(string)
if string.length == 1 || string.length == 0
true
else
if string[0] == string[-1]
palindrome?(string[1..-2])
else
false
end
end
end
Si lire la documentation de la chaîne Ruby est trop ennuyeux pour vous, essayez de jouer avec les questions pratiques Ruby sur CodeQuizzes et vous découvrirez la plupart des méthodes importantes.
def is_palindrome(value)
value.downcase!
# Reverse the string
reversed = ""
count = value.length
while count > 0
count -= 1
reversed += value[count]
end
# Instead of writing codes for reverse string
# we can also use reverse Ruby method
# something like this value == value.reverse
if value == reversed
return "#{value} is a palindrom"
else
return "#{value} is not a palindrom"
end
end
puts "Enter a Word"
a = gets.chomp
p is_palindrome(a)
class String
def palindrome?
self.downcase == self.reverse.downcase
end
end
puts "racecar".palindrome? # true
puts "Racecar".palindrome? # true
puts "mississippi".palindrome? # false
> first method
a= "malayalam"
if a == a.reverse
puts "a is true"
else
puts "false"
end
> second one
a= "malayalam"
a=a.split("")
i=0
ans=[]
a.count.times do
i=i+1
k=a[-(i)]
ans << k
end
if a== ans
puts "true"
else
puts "false"
end
str= gets.chomp
str_rev=""
n=1
while str.length >=n
str_rev+=str[-n]
n+=1
end
if str_rev==str
puts "YES"
else
puts "NO"
end