Python program to find distance between two words


Suppose we have three strings text, w1, and w2. The text is a sentence with different words. We have to find the smallest distance between any two occurrences of w1 and w2 in the text, the distance is measured in number of words in between them. If either w1 or w2 is not present in text, return -1.

So, if the input is like text = "joy happy power happy joy joy power happy limit" w1 = "power" w2 = "limit", then the output will be 1, as there is only one word "happy" in between the power and limit.

To solve this, we will follow these steps −

  • index1 := null, index2 := null

  • distance := 999999

  • for each index idx and word w in text, do

    • if w is same as w1, then

      • if index2 is not null, then

        • distance := minimum of distance and (|idx - index2| - 1)

      • index1 := idx

    • if w is same as w2, then

      • if index1 is not null, then

        • distance := minimum of distance and (|idx - index1| - 1)

      • index2 := idx

  • if index1 is not null and index2 is not null, then

    • return distance

  • return -1

Example

Let us see the following implementation to get better understanding

def solve(text, w1, w2):
   index1 = None
   index2 = None
   distance = 2000000
   for idx, word in enumerate(text.split(" ")):
      if word == w1:
         if index2 is not None:
            distance = min(distance, abs(idx - index2) - 1)
         index1 = idx
      if word == w2:
         if index1 is not None:
            distance = min(distance, abs(idx - index1) - 1)
         index2 = idx
   if index1 is not None and index2 is not None:
      return distance
   return -1

text = "joy happy power happy joy joy power happy limit"
w1 = "power"
w2 = "limit"
print(solve(text, w1, w2))

Input

"joy happy power happy joy joy power happy limit", "power", "limit"

Output

1

Python program to find distance between two words

Updated on 12-Oct-2021 11:18:51

  • Related Questions & Answers
  • Smallest Distance Between Two Words in Python
  • Program to find the minimum edit distance between two strings in C++
  • Find the minimum distance between two numbers in C++
  • Program to find minimum distance to the target element using Python
  • Program to find largest distance pair from two list of numbers in Python
  • Program to find minimum cost to pick up gold in given two locations in Python
  • Python program to find uncommon words from two Strings
  • Python program to Count words in a given string?
  • Program to find out distance between two nodes in a binary tree in Python
  • Program to find minimum total distance between house and nearest mailbox in Python
  • Find distance between two nodes of a Binary Tree in C++ Program
  • Program to find union of two given linked lists in Python
  • Minimum Distance to Type a Word Using Two Fingers in C++
  • Program to find minimum difference between two elements from two lists in Python
  • Program to find maximum distance between a pair of values in Python


Suppose we have two strings, word0, and word1 and a text. We have to find the smallest distance between any two occurrences of word0 and word1 in the given text. Here the distance is measured in number of words. If they are not present in the text then return -1.

So, if the input is like text = "cat dog abcd dog cat cat abcd dog wxyz", word0 = "abcd", word1 = "wxyz", then the output will be 1, as there is one word "dog" between "abcd" and "wxyz"

To solve this, we will follow these steps −

  • word_list := a list of words from text
  • ans := size of word_list
  • L := null
  • for R in range 0 to size of word_list - 1, do
    • if word_list[R] is word0 or word_list[R] is word1, then
      • if L is not null and word_list[R] is not word_list[L], then
        • ans := minimum of ans and R - L - 1
      • L := R
  • return -1 if ans is same as size of word_list otherwise ans

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution:
   def solve(self, text, word0, word1):
      word_list = text.split()
      ans = len(word_list)
      L = None
      for R in range(len(word_list)):
         if word_list[R] == word0 or word_list[R] == word1:
            if L is not None and word_list[R] != word_list[L]:
               ans = min(ans, R - L - 1)
               L = R
      return -1 if ans == len(word_list) else ans
ob = Solution()
text = "cat dog abcd dog cat cat abcd dog wxyz"
word0 = "abcd"
word1 = "wxyz"
print(ob.solve(text, word0, word1))

Input

"cat dog abcd dog cat cat abcd dog wxyz", "abcd", "wxyz"

Output

1

Python program to find distance between two words

Updated on 22-Sep-2020 11:25:39

  • Related Questions & Answers
  • Calculate distance and duration between two places using google distance matrix API in Python?
  • Program to find minimum distance of two given words in a text in Python
  • Hamming Distance between two strings in JavaScript
  • Check if edit distance between two strings is one in Python
  • Remove space between two words in MySQL?
  • C program to calculate distance between two points
  • Find the minimum distance between two numbers in C++
  • Common Words in Two Strings in Python
  • Find K-th Smallest Pair Distance in C++
  • Program to find out distance between two nodes in a binary tree in Python
  • How to compute pairwise distance between two vectors in PyTorch?
  • 8085 program to find smallest number between two numbers
  • Program to find smallest pair sum where distance is not consecutive in Python
  • How to get the distance between two geographic locations in Android?
  • Find distance between two nodes of a Binary Tree in C++

How do you find the distance between two words in Python?

if w is same as w1, then. if index2 is not null, then. distance := minimum of distance and (|idx - index2| - 1) index1 := idx..
if w is same as w2, then. if index1 is not null, then. distance := minimum of distance and (|idx - index1| - 1) index2 := idx..

How do you find the distance between two characters in Python?

You can just use the str. index(char, [beg, end]) method to retrieve the position of a character inside a string. The method allows you to add a beginning and end position that you can use to check for the different occurrences. Using multiple lines you could avoid calling the s.

How do you find the distance between two strings?

There are several ways to measure the distance between two strings. The simplest one is to use hamming distance to find the number of mismatch between two strings. However, the two strings must have the same length.

How does Python calculate edit distance?

The edit distance between two strings refers to the minimum number of character insertions, deletions, and substitutions required to change one string to the other. For example, the edit distance between "kitten" and "sitting" is three: substitute the "k" for "s", substitute the "e" for "i", and append a "g".