我知道如何在沒有 reverse 方法的情況下反轉 ruby?? 中的字串
def reverse(string)
string.each_char.inject(""){|str, char| str.insert(0, char) }
end
puts reverse('hello world')
但是有沒有辦法我可以只反轉奇數索引看起來像這樣。
output: hlloo wlred
uj5u.com熱心網友回復:
這是一個有趣的問題,這就是我想出的:
def funky_reverse(str)
out = ""
str.length.times{|i| out = i.even? ? str[i] : str[-i-1]}
out
end
uj5u.com熱心網友回復:
這是我的做法:
def odd_reverse(str)
a = [str, str.reverse]
str.size.times.map {|i| a[i % 2][i] }.join
end
odd_reverse("hello world")
# => "hlloo wlred"
這很簡單。對于每個字符索引i,它交替 ( i % 2) 從字串或其反向 ( [s, s.reverse]) 中獲取下一個字符。
uj5u.com熱心網友回復:
根據 Les Nightingill 的回答,我想出了這個方法,它使用reference_index變數來處理奇數和偶數長度的字串,以指向字串的末尾或根據需要稍微超過它。
def funky_reverse(str)
out = ''
reference_index = str.length.odd? ? str.length - 1 : str.length
str.length.times{ |i| out = i.even? ? str[i] : str[reference_index - i] }
out
end
> funky_reverse('hello world')
=> "hlloo wlred"
> funky_reverse('hello world!')
=> "h!lloow rlde"
這看起來像一個家庭作業問題?:D
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505039.html
上一篇:為什么我的Rails上出現“Unpermittedparameters::id,:reservation”錯誤?
