Reputation: 849
I have written ruby function that checks each word in a sentence and returns longest word with its length.
My question is I only want it to return word. I do not want it to return both word and it's length.
Please help and explain how can I make it better. Thank you
def longest_word(sentence)
words = sentence.split(" ")
frequencies = Hash.new(0)
words.each {|x| frequencies[x] = x.length}
frequencies.max_by{|k,v| v}
end
puts longest_word("short longest")
Upvotes: 0
Views: 206
Reputation: 1007
sentence = %w{I have longest word}
def longest_word(sentence)
longest_word = ''
sentence.each do |word|
longest_word = word if longest_word.length < word.length
end
puts longest_word
end
longest_word(sentence)
=> longest
Upvotes: 1
Reputation: 13477
def longest_word(sentence)
words = sentence.split(" ").sort_by(&:length)[-1]
end
Upvotes: 1
Reputation: 2131
def longest_word(sentence)
sentence.split.max{|a,b| a.length <=> b.length }
end
puts longest_word("short longest longerer longer")
Upvotes: 2
Reputation: 9226
max_by
is the correct idea, but your method can be simpler:
def longest_word(sentence)
sentence.split(/\s+/).max_by(&:size)
end
Upvotes: 2
Reputation: 19031
def longest_word(sentence)
longest_word = ''
sentence.split(' ').each do |word|
if word.length > longest_word.length
longest_word = word
end
end
longest_word
end
Upvotes: 1