""" 0557.1 - Reverse Words in a String III - Solution 1 - Split, Reverse, Join """
#####################################################################################
# Imports
#####################################################################################
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def reverseWords(self, s: str) -> str:
"""Reverse Words in a String III Function"""
return ' '.join([word[::-1] for word in s.split(' ')])
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().reverseWords("Let's take LeetCode contest")) # "s'teL ekat edoCteeL tsetnoc"
print(Solution().reverseWords("Mr Ding")) # "rM gniD"
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()
""" 0557.2 - Reverse Words in a String III - Solution 2 - Two Pointer In-Place Reversal """
#####################################################################################
# Imports
#####################################################################################
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def reverseWords(self, s: str) -> str:
"""Reverse Words in a String III Function"""
chars = list(s)
start = 0
for end in range(len(chars) + 1):
if end == len(chars) or chars[end] == ' ':
left, right = start, end - 1
while left < right:
chars[left], chars[right] = chars[right], chars[left]
left += 1
right -= 1
start = end + 1
return ''.join(chars)
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().reverseWords("Let's take LeetCode contest")) # "s'teL ekat edoCteeL tsetnoc"
print(Solution().reverseWords("Mr Ding")) # "rM gniD"
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()