2011-12-11 27 views

Trả lời

15
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 
42

Nếu bạn không quen với String phương pháp Ruby, bạn nên có một cái nhìn tại các documentation, nó rất tốt. Câu trả lời của Mithun đã cho bạn thấy nguyên tắc cơ bản, nhưng kể từ khi bạn mới làm quen với Ruby, có một vài điều cần lưu ý:

*) Nếu bạn có một phương pháp dự đoán, thông thường đặt tên nó là dấu chấm hỏi , ví dụ palindrome?.

*) Biểu thức Boolean đánh giá thành boolean, do đó bạn không cần trả lại rõ ràng true hoặc false. Do đó một phiên bản thành ngữ ngắn sẽ

def palindrome?(str) 
    str == str.reverse 
end 

*) Kể từ khi lớp học của Ruby được mở, bạn có thể thêm video này vào lớp chuỗi:

class String 
    def palindrome? 
    self == self.reverse 
    end 
end 

*) Nếu bạn không muốn con khỉ-vá String, bạn có thể trực tiếp xác định các phương pháp trên đối tượng duy nhất (hoặc sử dụng một mô-đun và Object#extend):

foo = "racecar" 
def foo.palindrome? 
    self == self.reverse 
end 

*) bạn có thể muốn làm cho palindrome kiểm tra phức tạp hơn một chút, ví dụ như khi nói đến vụ án hay trắng, vì vậy bạn cũng có thể phát hiện câu xuôi ngược, vốn từ như "xe đua" vv

pal = "Never a foot too far, even." 
class String 
    def palindrome? 
    letters = self.downcase.scan(/\w/) 
    letters == letters.reverse 
    end 
end 
pal.palindrome? #=> true 
+0

Việc sử dụng của 'self.' (nhưng không phải là công dụng của' self' mà không có dấu chấm) là không cần thiết. –

+2

Vì vậy, là dấu ngoặc đơn xung quanh các đối số phương thức. Mã hóa phong cách cũng giống như hương vị, của mọi người khác là xấu ;-) –

+0

Đây có phải là siêu đắt tiền không? Tạo một mảng mới chỉ để kiểm tra xem từ đó có phải là palindrome không? Tôi biết nó là mã ngắn và trông khá ... nhưng nó cảm thấy đắt tiền ... –

9

Giải pháp đệ quy cho thấy cách các chuỗi có thể được lập chỉ mục trong 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 

Nếu đọc tài liệu chuỗi Ruby quá nhàm chán cho bạn, hãy thử chơi xung quanh với các câu hỏi thực hành Ruby trên CodeQuizzes và bạn sẽ nhận hầu hết các phương pháp quan trọng.

3
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) 
0
class String 
    def palindrome? 
    self.downcase == self.reverse.downcase 
    end 
end 

puts "racecar".palindrome? # true 
puts "Racecar".palindrome? # true 
puts "mississippi".palindrome? # false 
0
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 
0

> 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

Các vấn đề liên quan