TheAlgorithms-Ruby/data_structures/arrays/shortest_word_distance.rb

34 lines
1 KiB
Ruby
Raw Permalink Normal View History

2021-05-05 18:58:43 +02:00
# Shortest Word Distance
# Given a list of words and two words word1 and word2,
# return the shortest distance between these two words in the list.
# @param {String[]} words
# @param {String} word1
# @param {String} word2
# @return {Integer}
def shortest_distance(words, word1, word2)
return 0 if word1 == word2
return 0 unless words.include?(word1) && words.include?(word2)
minimum_distance = words.length
words.each_with_index do |outer_value, outer_index|
words.each_with_index do |inner_value, inner_index|
if ((inner_value == word1 && outer_value == word2) || (inner_value == word2 && outer_value == word1)) && (minimum_distance > (outer_index - inner_index).abs)
minimum_distance = (outer_index - inner_index).abs
end
end
end
minimum_distance
end
words = %w[practice makes perfect coding makes]
word1 = 'coding'
word2 = 'practice'
puts(shortest_distance(words, word1, word2))
# Output: 3
words = %w[practice makes perfect coding makes]
word1 = 'makes'
word2 = 'coding'
puts(shortest_distance(words, word1, word2))
# Output: 1