24 lines
448 B
Ruby
24 lines
448 B
Ruby
|
def reverse_sentence(str)
|
||
|
reverse_in_place(str, 0, str.length - 1)
|
||
|
|
||
|
word_beginning = 0
|
||
|
(0..str.length).each do |i|
|
||
|
if i == str.length || str[i] == ' '
|
||
|
reverse_in_place(str, word_beginning, i - 1)
|
||
|
word_beginning = i + 1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
str
|
||
|
end
|
||
|
|
||
|
def reverse_in_place(str, start, len)
|
||
|
while start < len
|
||
|
str[start], str[len] = str[len], str[start]
|
||
|
start += 1
|
||
|
len -= 1
|
||
|
end
|
||
|
|
||
|
str
|
||
|
end
|