Open In App

Python | Reverse Incremental String Slicing

Improve
Improve
Like Article
Like
Save
Share
Report

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




# Python3 code to demonstrate working of
# Reverse Incremental String Slicing
# Using loop
 
# initializing string
test_str = "geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Reverse Incremental String Slicing
# Using loop
res = []
sub = ''
for chr in reversed(test_str):
    sub += chr
    res.append(sub)
 
# printing result
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




# Python3 code to demonstrate working of
# Reverse Incremental String Slicing
# Using list comprehension + list slicing
 
# initializing string
test_str = "geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Reverse Incremental String Slicing
# Using list comprehension + list slicing
res = [test_str[-1: idx: -1] for idx in range(-2, -2 - len(test_str), -1)]
 
# printing result
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




# Python3 code to demonstrate working of
# Reverse Incremental String Slicing
# Using accumulate + string slicing
 
from itertools import accumulate
import operator
 
# initializing string
test_str = "geeks"
 
# printing original string
print("The original string is : " + test_str)
 
 
# Reverse Incremental String Slicing
# Using accumulate + string slicing
ans = list(accumulate(test_str[::-1], operator.add))
 
# printing result
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




# Python3 code to demonstrate working of
# Reverse Incremental String Slicing
# Using loop
 
# initializing string
test_str = "geeks"
 
# printing original string
print("The original string is : " + test_str)
 
# Reverse Incremental String Slicing
# Using loop
res = []
x=test_str[::-1]
for i in range(0,len(x)):
    res.append(x[:i+1])
# printing result
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):
    # Append the previous substring and the current character to the accumulator list
    acc.append(acc[-1] + chr)
    return acc
 
test_str = "geeks"
 
# Apply the reduce function to the reversed string
# The initial value of the accumulator is [''], which represents the empty string
# The reverse_incremental_string function is applied to each character of the reversed string
# The final result is the list of incremental reverse strings, excluding the empty string at the beginning
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.



Last Updated : 27 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads