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 at3
(inclusive). The resulting string will be"dcbaefd"
.
Return the resulting string.
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".
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".
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".
1 <= word.length <= 250
word
consists of lowercase English letters.ch
is a lowercase English letter.
class Solution:
def reversePrefix(self, word: str, char: str) -> str:
charIndex = word.find(char)
pre = word[0:charIndex + 1]
return pre[::-1] + word[charIndex + 1:]
class Solution:
def reversePrefix(self, word: str, char: str) -> str:
charIndex = word.find(char)
res = ''
l, r = 0, charIndex
while l <= r:
res += word[r]
r-=1
res += word[charIndex + 1:]
return res
class Solution {
public String reversePrefix(String word, char ch) {
int charIndex = word.indexOf(ch);
String pre = new StringBuilder(word.substring(0, charIndex + 1)).reverse().toString();
return pre + word.substring( charIndex + 1);
}
}
class Solution {
public String reversePrefix(String word, char ch) {
int charIndex = word.indexOf(ch);
String prefix = reverse(word.substring(0, charIndex + 1));
String postfix = word.substring(charIndex + 1);
return prefix + postfix;
}
private String reverse(String word) {
String res = "";
for (int i = word.length() - 1; i >= 0; i--) {
res += word.charAt(i);
}
return res;
}
}
func reversePrefix(word string, ch byte) string {
chIndex := findIndexInString(word, ch)
prefix := reverse(word[0:chIndex + 1])
postfix := word[chIndex + 1:]
return prefix + postfix
}
func reverse(word string) string {
var res strings.Builder
n := len(word)
for i := n - 1; i >= 0; i-- {
res.WriteByte(word[i])
}
return res.String()
}
func findIndexInString(word string, ch byte) int {
for i := range word {
if word[i] == byte(ch) {
return i
}
}
return -1
}