Given a String list, append to String i or j value depending on Kth index value.
Input : test_list = [“neveropen”, “best”, “for”, “neveropen”], K = 2, N = ‘e’, i, j = “@@”, “..”
Output : [‘neveropen..’, ‘best@@’, ‘for@@’, ‘neveropen..’]
Explanation : neveropen and neveropen having similar 2nd occ. value as ‘e’, hence gets appended by “..”.
Input : test_list = [“giiksforneveropen”, “bst”, “for”, “neveropen”], K = 2, N = ‘e’, i, j = “@@”, “..”
Output : [‘giiksforneveropen@@’, ‘best@@’, ‘for@@’, ‘neveropen@@’]
Explanation : No values with K value ‘e’, all appended by @@.
Method #1: Using loop
This is a brute way to solve this problem, we check for each string’s Kth index, if found to be N, then i value is appended else j is appended.
Python3
# Python3 code to demonstrate working of # Append according to Kth character# Using loop# initializing liststest_list = ["neveropen", "best", "for", "neveropen"]# printing stringprint("The original list : " + str(test_list))# initializing KK = 2# initializing N N = 'e'# initializing i, j i, j = "**", "##"res = []for sub in test_list: # checking for Kth index to be N if sub[K] == N: res.append(sub + i) else : res.append(sub + j)# Printing the resultant list print("The resultant List : " + str(res)) |
The original list : ['neveropen', 'best', 'for', 'neveropen'] The resultant List : ['neveropen**', 'best##', 'for##', 'neveropen**']
Time complexity: O(n), where n is the length of the test_list. The loop takes O(n) time.
Auxiliary Space: O(n), extra space of size n is required.
Method #2: Using list comprehension
This solves this problem in a similar manner, just the difference being, it’s a shorthand and can be used as a one-liner approach to solve this problem.
Python3
# Python3 code to demonstrate working of # Append according to Kth character# Using list comprehension# Initializing liststest_list = ["neveropen", "best", "for", "neveropen"]# Printing stringprint("The original list : " + str(test_list))# Initializing KK = 2# Initializing N N = 'e'# initializing i, j i, j = "**", "##"# shorthand to solve this problemres = [sub + i if sub[K] == N else sub + j for sub in test_list]# Printing results print("The resultant List : " + str(res)) |
The original list : ['neveropen', 'best', 'for', 'neveropen'] The resultant List : ['neveropen**', 'best##', 'for##', 'neveropen**']
The Time and Space Complexity for all the methods is the same:
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 3: Using map() with lambda function
Python3
# Python3 code to demonstrate working of # Append according to Kth character# Using map() with lambda function# initializing liststest_list = ["neveropen", "best", "for", "neveropen"]# printing stringprint("The original list : " + str(test_list))# initializing KK = 2# initializing N N = 'e'# initializing i, j i, j = "**", "##"# Appending string # using map() with lambda functionres = list(map(lambda sub: sub + i if sub[K] == N else sub + j, test_list))# Printing results print("The resultant List : " + str(res)) |
The original list : ['neveropen', 'best', 'for', 'neveropen'] The resultant List : ['neveropen**', 'best##', 'for##', 'neveropen**']
Time Complexity: O(N)
Auxiliary Space: O(N)
