supritshah1289
supritshah1289

Reputation: 849

Ruby function for finding longest_word

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

Answers (5)

Dharmesh Rupani
Dharmesh Rupani

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

Ilya
Ilya

Reputation: 13477

def longest_word(sentence)
  words = sentence.split(" ").sort_by(&:length)[-1]
end

Upvotes: 1

dwilkins
dwilkins

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

eugen
eugen

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

Jason Kim
Jason Kim

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

Related Questions