Sometimes, while working with Python strings, we can have a problem in which we require to extract all the elements of string except those which present in a substring. This is quite common problem and has application in many domains including those of day-day and competitive programming. Lets discuss certain ways in which this task can be performed.
Method #1: Using loop This is brute force approach to this problem. In this we employ not operator to test for element presence in master string and extract it if the element is not present in K string.
Python3
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
res = []
for ele in test_str1:
if ele not in test_str2:
res.append(ele)
res = ''.join(res)
print ( "String after removal of substring elements : " + str (res))
|
Output :
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements : gkorgk i bt
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #2: Using set operations This task can also be performed by including set operations. One can perform a set difference to get the difference of elements. The drawbacks are that order is not preserved and duplicates are removed.
Python3
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
res = ''.join( list ( set (test_str1) - set (test_str2)))
print ( "String after removal of substring elements : " + str (res))
|
Output :
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements : oti krbg
Time Complexity: O(1)
Auxiliary Space: O(n)
Method#3: Using re.sub() : This task can also be performed using re.sub function. re.sub() function is used to substitute the matched pattern with the another string. We can use empty string for substituting which work as we erase all the matched character in string.
Python3
import re
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
res = re.sub(f '[{test_str2}]' , "", test_str1)
print ( "String after removal of substring elements : " + str (res))
|
Output
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements : gkorgk i bt
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #4 : Using replace() method
Python3
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
for i in test_str2:
test_str1 = test_str1.replace(i,"")
print ( "String after removal of substring elements : " + str (test_str1))
|
Output
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements : gkorgk i bt
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #5 : Using split() and join() methods
Approach
- Initiate a for loop to traverse test_str2
- Split test_str1 by each character of test_str2 and join test_str1 by empty string every time
- Finally at the end display test_str1
Python3
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
for i in test_str2:
test_str1 = test_str1.split(i)
test_str1 = "".join(test_str1)
print ( "String after removal of substring elements : " + str (test_str1))
|
Output
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements : gkorgk i bt
Time Complexity : O(N*M) N – length of test_str2 M -length of test_str1
Auxiliary Space : O(1) since we are displaying test_str1 as output
Method 6 : Using a list comprehension with a conditional statement.
Initialize two strings test_str1 and test_str2.
Print the original strings using print() function.
Use a list comprehension with a conditional statement to extract all characters in the first string test_str1 that are not present in the second string test_str2.
Use the join() method to join the list of extracted characters into a single string.
Store the result in a variable called result_str.
Print the result using print() function.
Python3
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
result_str = ''.join([char for char in test_str1 if char not in test_str2])
print ( "String after removal of substring elements : " + str (result_str))
|
Output
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements : gkorgk i bt
Time complexity: O(n), where n is the length of the first string.
Auxiliary space: O(k), where k is the length of the second string.
Method #7: Using str.translate() method
Python3
test_str1 = "geeksforgeeks is best"
test_str2 = "fes"
print ( "The original string 1 is : " + test_str1)
print ( "The original string 2 is : " + test_str2)
translation_table = str .maketrans(' ', ' ', test_str2)
result_str = test_str1.translate(translation_table)
print ( "String after removal of substring elements: " + str (result_str))
|
Output
The original string 1 is : geeksforgeeks is best
The original string 2 is : fes
String after removal of substring elements: gkorgk i bt
Time Complexity: The time complexity for this method is O(n), where n is the length of the input string test_str1.
Auxiliary Space: The auxiliary space complexity is O(1) since the space used is constant, irrespective of the size of the input string.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
01 Jun, 2023
Like Article
Save Article