mirror of
https://github.com/TheAlgorithms/Ruby
synced 2024-12-26 21:58:56 +01:00
add shortest word distance algorithm
This commit is contained in:
parent
8c26fd3dd1
commit
7623e08e48
1 changed files with 33 additions and 0 deletions
33
data_structures/arrays/shortest_word_distance.rb
Normal file
33
data_structures/arrays/shortest_word_distance.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
# 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
|
Loading…
Reference in a new issue