Python program for removing i-th character from a string
Last Updated :
14 Mar, 2023
Given the string, we have to remove the ith indexed character from the string. In any string, indexing always start from 0. Suppose we have a string geeks then its indexing will be as –
g e e k s
0 1 2 3 4
Examples :
Input : Geek
i = 1
Output : Gek
Input : Peter
i = 4
Output : Pete
Approach 1 : From the given string, i-th indexed element has to be removed. So, Split the string into two halves, before indexed character and after indexed character. Return the merged string. Below is the implementation of above approach :
Python
def remove(string, i):
a = string[: i]
b = string[i + 1 :]
return a + b
if __name__ = = '__main__' :
string = "geeksFORgeeks"
i = 5
print (remove(string, i))
|
Time Complexity: O(n) where n is the length of the string.
Auxiliary Space: O(n) where n is the length of the string.
Approach 2 : The idea is to use string replace in Python
Python
def remove(string, i):
for j in range ( len (string)):
if j = = i:
string = string.replace(string[i], "", 1 )
return string
if __name__ = = '__main__' :
string = "geeksFORgeeks"
i = 5
print (remove(string, i))
|
Time Complexity: O(n) where n is the length of the string. This is because the function performs a single loop through the string and calls the replace function once.
Auxiliary Space: O(1) because the function uses only a few variables and no additional data structures are created.
Approach 3 : Using list(),pop() and join() methods
Python3
def remove(string, i):
if i > len (string):
return string
a = list (string)
a.pop(i)
return "".join(a)
if __name__ = = '__main__' :
string = "geeksFORgeeks"
i = 2
print (remove(string, i))
|
Time Complexity: O(n) where n is the length of the string
Auxiliary Space: O(n) where n is the length of the string
Approach 4: Using enumerate, join
Python3
def remove(string, i):
return "".join()
print (remove( "geeksforgeeks" , 2 ))
|
The above approach uses a list comprehension to create a new list of characters from the original string, but excluding the i-th character. It iterates over the original string and for each character, it checks if the index of the character (j) is not equal to the specified index (i). If it is not equal, the character is included in the new list. Then, the join method is used to combine the characters of the new list into a single string. This approach is more concise than the previous ones, as it combines the steps of creating a new list and joining it into a single line of code.
Time complexity: O(n), where n is the length of the input string. This is because the function involves iterating through all the characters in the string and creating a new string by concatenating the characters that are not being removed.
Auxiliary Space: O(n) because it involves creating a new string with the same length as the input string.
Approach 5: Using the re module and f-string
- Import the re module
- pattern = f”(^.{{{i}}})(.)” Create a regular expression pattern that matches the character along with the substring before it. ^ matches the start of the string, {i} specifies the index of the character to be removed,
- re.sub(pattern, r”\1″, string) is used to substitute the matched pattern with the captured substring before the given index.
Python3
import re
def remove(string, i):
pattern = f "(^.{{{i}}})(.)"
return re.sub(pattern, r "\1" , string)
if __name__ = = '__main__' :
string = "geeksFORgeeks"
i = 5
print (remove(string, i))
|
Time Complexity: O(N) where n is the length of the input string as it iterates over all characters in the string to find the matching pattern.
Space Complexity: O(N) where n is the length of the input string as we creates a new string with the same length
Please Login to comment...