< Back

2000. Reverse Prefix of Word

This is a two-pointers problem that requires us to search for a specific character prior to reversing
the substring defined by the beginning of the array and the position of the found character.

Pretty straightfoward, iterate through the array until we find the character, then reverse the
substring. We maintain a pointer to the beginning of the array and use it to reverse characters with
the iterator defined to find the end of the substring.

The solution is as follows:

  class Solution:
      def reversePrefix(self, word: str, ch: str) -> str:
          i, ans = 0, list(word)
          for j in range(len(ans)):
              if ans[j] == ch:
                  while i < j:
                      ans[i], ans[j] = ans[j], ans[i]
                      i += 1
                      j -= 1

                  return "".join(ans)

          return "".join(ans)

_ Time Complexity:

  O(n) - We iterate through the array once.

_ Space Complexity:

  O(n) - We create a new array to store the reversed substring.