The challenge

Complete the function that accepts a string parameter, and reverses each word in the string. All spaces in the string should be retained.

Examples

1
2
"This is an example!" ==> "sihT si na !elpmaxe"
"double  spaces"      ==> "elbuod  secaps"

The solution in Python code

Option 1:

1
2
3
4
5
def reverse_words(text):
    out = []
    for word in text.split(" "):
        out.append(word[::-1])
    return " ".join(out)

Option 2:

1
2
def reverse_words(str):
    return ' '.join(s[::-1] for s in str.split(' '))

Option 3:

1
2
def reverse_words(str):
    return " ".join(map(lambda word: word[::-1], str.split(' ')))

Test cases to validate our solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import test
from solution import reverse_words

@test.describe("Fixed Tests")
def fixed_tests():
    @test.it('Basic Test Cases')
    def basic_test_cases():
        test.assert_equals(reverse_words('The quick brown fox jumps over the lazy dog.'), 'ehT kciuq nworb xof spmuj revo eht yzal .god')
        test.assert_equals(reverse_words('apple'), 'elppa')
        test.assert_equals(reverse_words('a b c d'), 'a b c d')
        test.assert_equals(reverse_words('double  spaced  words'), 'elbuod  decaps  sdrow')