Problem Link

Description


Given a 0-indexed string word and a character ch, reverse the segment of word that starts at index 0 and ends at the index of the first occurrence of ch (inclusive). If the character ch does not exist in word, do nothing.

  • For example, if word = "abcdefd" and ch = "d", then you should reverse the segment that starts at 0 and ends at 3 (inclusive). The resulting string will be "dcbaefd".

Return the resulting string.

Β 

Example 1:

Input: word = "abcdefd", ch = "d"
Output: "dcbaefd"
Explanation:Β The first occurrence of "d" is at index 3. 
Reverse the part of word from 0 to 3 (inclusive), the resulting string is "dcbaefd".

Example 2:

Input: word = "xyxzxe", ch = "z"
Output: "zxyxxe"
Explanation:Β The first and only occurrence of "z" is at index 3.
Reverse the part of word from 0 to 3 (inclusive), the resulting string is "zxyxxe".

Example 3:

Input: word = "abcd", ch = "z"
Output: "abcd"
Explanation:Β "z" does not exist in word.
You should not do any reverse operation, the resulting string is "abcd".

Β 

Constraints:

  • 1 <= word.length <= 250
  • word consists of lowercase English letters.
  • ch is a lowercase English letter.

Solution


Python3

class Solution:
    def reversePrefix(self, word: str, ch: str) -> str:
        N = len(word)
        word = list(word)
        
        for j, x in enumerate(word):
            if x == ch:
                i = 0
                while i <= j:
                    word[i], word[j] = word[j], word[i]
                    i += 1
                    j -= 1
                
                break
 
        return "".join(word)