Quería comprobar si una cadena es palíndromo o no utiliza el código ruby.Ruby forma de comprobar cadena palindrome
soy titular en rubí así que no demasiado aquainted con el string methods
en rubí
Quería comprobar si una cadena es palíndromo o no utiliza el código ruby.Ruby forma de comprobar cadena palindrome
soy titular en rubí así que no demasiado aquainted con el string methods
en rubí
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 no está familiarizado con String
métodos de Ruby, usted debe echar un vistazo a la documentation, es muy buena. La respuesta de Mithun ya te mostró el principio básico, pero como eres nuevo en Ruby, hay un par de cosas más a tener en cuenta:
*) Si tienes un método de predicado, es costumbre ponerle un signo de interrogación final , p.ej palindrome?
.
*) Las expresiones booleanas se evalúan como booleanas, por lo que no es necesario devolver explícitamente true
o false
. Por lo tanto, una versión idiomática corto sería
def palindrome?(str)
str == str.reverse
end
*) Dado que las clases de Ruby están abiertas, habría que agregar esto a la clase string:
class String
def palindrome?
self == self.reverse
end
end
*) Si no desea mono-parche String
, se puede definir directamente el método con sencillo en el objeto (o utilizar un módulo y Object#extend):
foo = "racecar"
def foo.palindrome?
self == self.reverse
end
*) Es posible que desee hacer el palíndromo comprobar un poco más complejo, por ejemplo, cuando se trata de mayúsculas o espacios en blanco, por lo que también son capaces de detectar frases palindrómicas, capitalizado palabras como "Coche de carreras", 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 solución recursiva muestra cómo las cadenas pueden ser indexados en 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 leer la documentación de la cadena Ruby es demasiado aburrida para ti, intenta jugar con las preguntas de práctica de Ruby en CodeQuizzes y recogerás la mayoría de los métodos 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
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
> 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
Los usos de 'self.' (pero no los usos de' self' sin el punto) son innecesarios. –
Entonces hay paréntesis alrededor de los argumentos del método. El estilo de codificación es como el gusto, el de los demás es malo ;-) –
¿No es esto muy caro? ¿Crear una nueva matriz solo para verificar si la palabra es palíndromo? Sé que es un código corto y se ve bonito ... pero se siente caro ... –