Write a function that reverses a string. The input string is given as an array of characters char[]
.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
You may assume all the characters consist of printable ascii characters.
Example 1:
Input: ["h","e","l","l","o"] Output: ["o","l","l","e","h"]
Example 2:
Input: ["H","a","n","n","a","h"] Output: ["h","a","n","n","a","H"]
Source
def reverse_list(stringlist):
"""Iterative approach"""
if not stringlist:
return
left = 0
right = len(stringlist)-1
while left < right:
stringlist[left], stringlist[right] = stringlist[right], stringlist[left]
left += 1
right -= 1
return stringlist
def reverse_list(stringlist):
"""Iterative approach"""
n = len(stringlist)
# base case
if n <= 1:
return stringlist
# recursion
return(reverse_list(stringlist[n//2:]) + reverse_list(stringlist[:n//2]))
def reverse_list(stringlist):
"""cheating"""
mylist[:] = mylist[::-1] # modified in place
# return mylist[::-1] # NOT modified in place
stringlist = ["h","e","l","l","o"]
reverse_list(stringlist)
['o', 'l', 'l', 'e', 'h']
stringlist = ["H","a","n","n","a","h"]
reverse_list(stringlist)
['h', 'a', 'n', 'n', 'a', 'H']