leetcode力扣刷题打卡
题目:2000. 反转单词前缀
描述:给你一个下标从 0 开始的字符串 word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。如果 word 中不存在字符 ch ,则无需进行任何操作。
思路:
1、反转都可以用双指针。
2、先找出下标i,然后对【0, i】区间进行反转,其余字符保持不变
3、一次遍历解决问题。
原代码##
class Solution {
public:
string reversePrefix(string word, char ch) {
int n = word.size();
int ind = 0;
for (int i = 0; i < n; ++i) {
if (word[i] == ch) {
ind = i;
break;
}
}
int l = 0, r = ind;
while (l < r) {
swap(word[l], word[r]);
l++;
r--;
}
return word;
}
};
简洁版代码##
class Solution {
public:
string reversePrefix(string word, char ch) {
int index = word.find(ch);
if (index != string::npos) {
reverse(word.begin(), word.begin() + index + 1);
}
return word;
}
};