2000. 反转单词前缀
给你一个下标从 0 开始的字符串
word
和一个字符ch
。找出ch
第一次出现的下标i
,反转word
中从下标0
开始、直到下标i
结束(含下标i
)的那段字符。如果word
中不存在字符ch
,则无需进行任何操作。例如,如果
word = "abcdefd"
且ch = "d"
,那么你应该 反转 从下标 0 开始、直到下标3
结束(含下标3
)。结果字符串将会是"dcbaefd"
。返回 结果字符串 。
示例 1:
输入:word = "abcdefd", ch = "d"
输出:"dcbaefd"
解释:"d" 第一次出现在下标 3 。
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "dcbaefd" 。
示例 2:
输入:word = "xyxzxe", ch = "z"
输出:"zxyxxe"
解释:"z" 第一次也是唯一一次出现是在下标 3 。
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "zxyxxe" 。
示例 3:
输入:word = "abcd", ch = "z"
输出:"abcd"
解释:"z" 不存在于 word 中。
无需执行反转操作,结果字符串是 "abcd" 。
解题思路:
- 在字符串中找到第一个字符出现的位置
- 判断能否找到该字符
- 如果找不到该字符,就直接返回原字符串
- 如果找到该字符,从开始到找到的位置字符反转后,返回字符串
代码:
//因为比较简单,所以直接用algorithm
class Solution
{
public:
string reversePrefix(string word, char ch)
{
//从字符串中找到第一个匹配字符出现的下标,如果找不到就返回-1
auto it = word.find_first_of(ch);
//反转开始位置到当前位置的字符. 因为找不到返回-1, -1 + 1 = 0;所以不用做判断
reverse(word.begin(), word.begin() + it + 1);
//返回字符串即可;
return word;
}
};