Tôi muốn kiểm tra xem chuỗi có palindrome hay không sử dụng mã ruby.Cách Ruby để kiểm tra chuỗi palindrome
Tôi là một khởi động trong ruby vì vậy không quá aquainted với string methods
trong ruby
Tôi muốn kiểm tra xem chuỗi có palindrome hay không sử dụng mã ruby.Cách Ruby để kiểm tra chuỗi palindrome
Tôi là một khởi động trong ruby vì vậy không quá aquainted với string methods
trong 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
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
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.
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
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. –
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 ;-) –
Đâ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 ... –