Given a String, perform split on vowels.
Example:
Input : test_str = 'GFGaBst'
Output : ['GFG', 'Bst']
Explanation : a is vowel and split happens on that.Input : test_str = 'GFGaBstuforigeeks'
Output : ['GFG', 'Bst', 'f', 'r', 'g', 'ks']
Explanation : a, e, o, u, i are vowels and split happens on that.
Naive approach:
- Initialize variable vowels to contain all the vowels.
- Initialize an empty list result and a variable temp to an empty string.
- Iterate through each character in the input string test_str.
- For each character, check if it is a vowel (by checking if it is in the vowels variable).
- If the character is a vowel and the temp variable is not empty, append temp to the result list and reset temp to an empty string.
- If the character is not a vowel, add it to the temp variable.
- After the iteration, if the temp variable is not empty, append it to the result list.
- Return the result list.
def split_on_vowels(test_str):
vowels = 'aeiouAEIOU'
result = []
temp = ""
for char in test_str:
if char in vowels:
if temp != "":
result.append(temp)
temp = ""
else:
temp += char
if temp != "":
result.append(temp)
return result
test_str = 'GFGaBstuforigeeks'
print(split_on_vowels(test_str))
Output
['GFG', 'Bst', 'f', 'r', 'g', 'ks']
Time Complexity: O(N)
Auxiliary Space: O(N)
Method 1 : Using regex() + split()
In this, we use regex split() which accepts multiple characters to perform split, passing list of vowels, performs split operation over string.
# Python3 code to demonstrate working of
# Split String on vowels
# Using split() + regex
import re
# initializing strings
test_str = 'GFGaBste4oCS'
# printing original string
print("The original string is : " + str(test_str))
# splitting on vowels
# constructing vowels list
# and separating using | operator
res = re.split('a|e|i|o|u', test_str)
# printing result
print("The splitted string : " + str(res))
Output
The original string is : GFGaBste4oCS The splitted string : ['GFG', 'Bst', '4', 'CS']
Time Complexity: O(n), where n is the length of the string "test_str". The "re.split" function splits the string by searching for specified characters (vowels), which takes linear time proportional to the length of the string.
Auxiliary space: O(1), as it uses a constant amount of memory regardless of the size of the input string "test_str".
Method 2 : Using replace() and split().
First replace all vowels in string with "*" and then split the string by "*" as delimiter
# Python3 code to demonstrate working of
# Split String on vowels
# initializing strings
test_str = 'GFGaBste4oCS'
# printing original string
print("The original string is : " + str(test_str))
# splitting on vowels
vow="aeiouAEIOU"
for i in test_str:
if i in vow:
test_str=test_str.replace(i,"*")
res=test_str.split("*")
# printing result
print("The splitted string : " + str(res))
Output
The original string is : GFGaBste4oCS The splitted string : ['GFG', 'Bst', '4', 'CS']
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #3 : Using replace(),split() and ord() methods
# Python3 code to demonstrate working of
# Split String on vowels
# initializing strings
test_str = 'GFGaBste4oCS'
# printing original string
print("The original string is : " + str(test_str))
# splitting on vowels
x=[97, 101, 105, 111, 117, 65, 69, 73, 79, 85]
for i in test_str:
if ord(i) in x:
test_str=