Given a list of strings, perform concatenation of Strings whose length is greater than K.
Input : test_list = [“Gfg”, ‘is’, “Best”, ‘for’, ‘CS’, ‘Everything’], K = 3
Output : BestEverything
Explanation : All elements with Length > 3 are concatenated.
Input : test_list = [“Gfg”, ‘is’, “Best”, ‘for’, ‘CS’, ‘Everything’], K = 1
Output : GfgisBestforCSEverything
Explanation : All elements with Length > 1 are concatenated.
Method #1: Using loop + len():
This offers a brute way to solve this problem. In this, we iterate for each string and perform concatenation if the string length is greater than K using len().
Python3
test_list = [ "Gfg" , 'is' , "Best" , 'for' , 'CS' , 'Everything' ]
print ( "The original list : " + str (test_list))
K = 2
res = ''
for ele in test_list:
if len (ele) > 2 :
res + = ele
print ( "String after Concatenation : " + str (res))
|
OutputThe original list : ['Gfg', 'is', 'Best', 'for', 'CS', 'Everything']
String after Concatenation : GfgBestforEverything
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #2 : Using join() + filter() + lambda + len():
The combination of above functions can be used to solve this problem. In this, we perform concatenation using join(), filter and lambda are used for conditional check using len().
Python3
test_list = [ "Gfg" , 'is' , "Best" , 'for' , 'CS' , 'Everything' ]
print ( "The original list : " + str (test_list))
K = 2
res = ''.join( filter ( lambda ele: len (ele) > K, test_list))
print ( "String after Concatenation : " + str (res))
|
OutputThe original list : ['Gfg', 'is', 'Best', 'for', 'CS', 'Everything']
String after Concatenation : GfgBestforEverything
Time Complexity: O(n)
Auxiliary Space: O(n)
Method#3: Using list comprehension + join():
This method lists strings whose length is greater than the defined number. With the help of join method, we can join the list in string.
Python3
test_list = [ "Gfg" , 'is' , "Best" , 'for' , 'CS' , 'Everything' ]
print ( "The original list : " + str (test_list))
K = 3
temp = [x for x in test_list if len (x) > K]
res = "".join(temp)
print ( "String after Concatenation : " + str (res))
|
OutputThe original list : ['Gfg', 'is', 'Best', 'for', 'CS', 'Everything']
String after Concatenation : BestEverything
The Time and Space Complexity for all the methods are the same:
Time Complexity: O(n)
Space Complexity: O(n)
Approach#4: Using reduce
This approach defines a function concat_strings that takes a list test_list and an integer K as input. It uses the filter function with a lambda function to filter the elements of test_list with length greater than K. It then uses the reduce function with a lambda function to concatenate the filtered elements. Finally, it returns the concatenated string.
Algorithm
1. Use reduce function to concatenate the elements of the input list with length greater than K.
2. Return the concatenated string.
Python3
from functools import reduce
def concat_strings(test_list, K):
filtered_list = filter ( lambda string: len (string) > K, test_list)
concatenated_string = reduce ( lambda x, y: x + y, filtered_list, '')
return concatenated_string
test_list = [ "Gfg" , 'is' , "Best" , 'for' , 'CS' , 'Everything' ]
K = 3
print (concat_strings(test_list, K))
|
Time Complexity: O(n), where n is the length of the input list.
Auxiliary Space: O(n), where n is the length of the input list (due to the creation of a new iterator).