Sometimes, while working with Python strings, we can have a problem in which we need to perform the slice and print of strings in reverse order. This can have applications in day-day programming. Let us discuss certain ways in which this task can be performed.
Method #1: Using loops
This is the brute-force way in which this task can be performed. In this, we iterate the list in reverse order and store the incremental strings in the list.
Python3
test_str = "geeks"
print ( "The original string is : " + test_str)
res = []
sub = ''
for chr in reversed (test_str):
sub + = chr
res.append(sub)
print ( "The incremental reverse strings : " + str (res))
|
Output :
The original string is : geeks
The incremental reverse strings : ['s', 'sk', 'ske', 'skee', 'skeeg']
Method #2: Using list slicing + list comprehension
This is yet another way in which this task can be performed. In this, we iterate the string list using list comprehension and slicing is used to perform incremental slicing.
Python3
test_str = "geeks"
print ( "The original string is : " + test_str)
res = [test_str[ - 1 : idx: - 1 ] for idx in range ( - 2 , - 2 - len (test_str), - 1 )]
print ( "The incremental reverse strings : " + str (res))
|
Output :
The original string is : geeks
The incremental reverse strings : ['s', 'sk', 'ske', 'skee', 'skeeg']
Method #3: Using accumulate + string slicing
This is another way to perform the task. We can use string slicing to reverse the string and accumulate is used to iterate over the string and slice the string in sub-strings.
Python3
from itertools import accumulate
import operator
test_str = "geeks"
print ( "The original string is : " + test_str)
ans = list (accumulate(test_str[:: - 1 ], operator.add))
print ( "The incremental reverse strings : " + str (ans))
|
Output
The original string is : geeks
The incremental reverse strings : ['s', 'sk', 'ske', 'skee', 'skeeg']
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #4: Using slicing
Python3
test_str = "geeks"
print ( "The original string is : " + test_str)
res = []
x = test_str[:: - 1 ]
for i in range ( 0 , len (x)):
res.append(x[:i + 1 ])
print ( "The incremental reverse strings : " + str (res))
|
Output
The original string is : geeks
The incremental reverse strings : ['s', 'sk', 'ske', 'skee', 'skeeg']
Method #5: Using reduce function
- Import the reduce function from the functools module.
- Define a function called reverse_incremental_string that takes two arguments: an accumulator list acc and a character chr.
- Inside the reverse_incremental_string function, append the previous substring and the current character to the accumulator list.
- Return the accumulator list.
- Define a string called test_str to store the input string.
- Apply the reduce function to the reversed string, using reverse_incremental_string as the reducing function and [”] as the initial value of the accumulator.
- The final result is a list of incremental reverse strings, excluding the empty string at the beginning.
Python3
from functools import reduce
def reverse_incremental_string(acc, chr ):
acc.append(acc[ - 1 ] + chr )
return acc
test_str = "geeks"
res = reduce (reverse_incremental_string, reversed (test_str), [''])
print ( "The incremental reverse strings : " + str (res[ 1 :]))
|
Output
The incremental reverse strings : ['s', 'sk', 'ske', 'skee', 'skeeg']
Time complexity: O(n), where n is the length of the input string. This is because the reduce function applies the reverse_incremental_string function to each character of the reversed string, resulting in a linear time complexity.
Auxiliary space: O(n), where n is the length of the input string. This is because we use a list to store the incremental reverse strings as they are computed. The size of this list grows linearly with the length 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!