LeetCode 0186. Reverse Words in a String II Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
0186. Reverse Words in a String II

Description

Given a character array s, reverse the order of the words.

A word is defined as a sequence of non-space characters. The words in s will be separated by a single space.

Your code must solve the problem in-place, i.e. without allocating extra space.

 

Example 1:

Input: s = ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"]
Output: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]

Example 2:

Input: s = ["a"]
Output: ["a"]

 

Constraints:

  • 1 <= s.length <= 105
  • s[i] is an English letter (uppercase or lowercase), digit, or space ' '.
  • There is at least one word in s.
  • s does not contain leading or trailing spaces.
  • All the words in s are guaranteed to be separated by a single space.

Solutions

Solution 1: Two Pointers

We can iterate through the character array s, using two pointers i and j to find the start and end positions of each word, then reverse each word, and finally reverse the entire character array.

The time complexity is O(n), where n is the length of the character array s. The space complexity is O(1).

PythonJavaC++GoTypeScript
class Solution: def reverseWords(self, s: List[str]) -> None: def reverse(i: int, j: int): while i < j: s[i], s[j] = s[j], s[i] i, j = i + 1, j - 1 i, n = 0, len(s) for j, c in enumerate(s): if c == " ": reverse(i, j - 1) i = j + 1 elif j == n - 1: reverse(i, j) reverse(0, n - 1)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !