Open In App

Python program to find the occurrence of substring in the string

Improve
Improve
Like Article
Like
Save
Share
Report

Given a list of words, extract all the indices where those words occur in the string.

Input : test_str = ‘geeksforgeeks is best for geeks and cs’, test_list = [“best”, “geeks”] 
Output : [2, 4] 
Explanation : best and geeks occur at 2nd and 4th index respectively.

Input : test_str = ‘geeksforgeeks is best for geeks and cs’, test_list = [“best”, “geeks”, “is”] 
Output : [1, 2, 4] 
Explanation : is, best and geeks occur at 1st, 2nd and 4th index respectively. 
 

Method #1 : Using list comprehension + split() + index()

In this, we perform the task of getting words from sentences using split(), and then match words from the string list to extracted strings using index().

Python3




# Python3 code to demonstrate working of
# Word occurrence positions in String
# Using list comprehension + split() + index()
 
# initializing string
test_str = 'geeksforgeeks is best for geeks and cs'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing list
test_list = ["best", "geeks", "cs"]
 
# using index() to get indices,
# list comprehension used to offer one liner
res = [test_str.split().index(ele)
       for ele in test_str.split() if ele in test_list]
         
# printing result
print("The indices list : " + str(res))


Output

The original string is : geeksforgeeks is best for geeks and cs
The indices list : [2, 4, 6]

Time Complexity: O(n)

Auxiliary Space: O(n)

Method #2 : Using list comprehension + enumerate() + split()

This is yet another way in which this task can be performed. In this task of getting indices is done using enumerate().

Python3




# Python3 code to demonstrate working of
# Word occurrence positions in String
# Using list comprehension + enumerate() + split()
 
# initializing string
test_str = 'geeksforgeeks is best for geeks and cs'
 
# printing original string
print("The original string is : " + str(test_str))
 
# initializing list
test_list = ["best", "geeks", "cs"]
 
# using enumerate() to get indices,
# list comprehension used to offer one liner
res = [idx for idx, ele in enumerate(test_str.split()) if ele in test_list]
         
# printing result
print("The indices list : " + str(res))


Output

The original string is : geeksforgeeks is best for geeks and cs
The indices list : [2, 4, 6]

Time Complexity: O(n)

Auxiliary Space: O(n)

Method 3: The idea is to use a simple for loop to iterate through each word in the string and check if it is present in the given list of words

Steps:

  1. Initialize a string test_str with some sample text.
  2. Create a list test_list of words whose positions we want to find in the string.
  3. Create an empty list res to store the positions of the words in the string.
  4. Use the split() method to split the string into a list of words, so that we can iterate over each word.
  5. Use a for loop to iterate through each word in the string, along with its index.
  6. Check if the current word is present in the test_list using the in operator.
  7. If the word is present in the list, append its index to the res list.
  8. Print the final list of indices.
     

Python3




# initializing string
test_str = 'geeksforgeeks is best for geeks and cs'
 
# initializing list
test_list = ["best", "geeks", "cs"]
 
# initializing an empty list to store the indices
res = []
 
# iterating through each word in the string
for idx, word in enumerate(test_str.split()):
 
    # checking if the word is in the given list
    if word in test_list:
 
        # appending the index of the
        # word to the result list
        res.append(idx)
 
# printing the result list
print("The indices list : " + str(res))


Output

The indices list : [2, 4, 6]

Time Complexity: O(n), where n is the number of words in the string.

Auxiliary Space: O(k), where k is the number of occurrences of the words in the given list in the string.



Last Updated : 21 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads