今日任务
- 344.反转字符串
- 541. 反转字符串II
- 卡码网:54.替换数字
详细布置
344.反转字符串
建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数
题目链接/文章讲解/视频讲解:代码随想录
class Solution {
public:
void reverseString(vector<char>& s) {
int left=0;
int right=s.size()-1;
while(left<right)
{
s[left]^=s[right];
s[right] ^= s[left];
s[left]^=s[right];
left++;
right--;
}
}
};
感觉是做过的比较简单的题目,只要交换下,即可。双指针法确实好用方便。没有什么好讲的。
541. 反转字符串II
建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。
class Solution {
public:
string reverseStr(string s, int k) {
int left=0;
int right=k-1;
for(int i=1;left<s.size();i++){
if(right>=s.size())
right=s.size()-1;
while(left<right)
{
s[left]^=s[right];
s[right]^=s[left];
s[left]^=s[right];
left++;
right--;
}
left=2*i*k;
right=2*i*k+k-1;
}
return s;
}
};
感觉这题算是自己做过的还算比较简单的题,非常意外的,只改了两次bug就提交成功,在写代码时,究竟是<还是<=,>还是>=。第二次提交的时候,通过了58个例子,结果2个没有通过,此时说明主体思路没有问题,但是部分可能会有bug,就要考率是不是判断的问题。很惊喜。
题目链接/文章讲解/视频讲解:代码随想录
卡码网:54.替换数字
这题也不难,虽然卡尔给的思路也很简单,但是
class Solution {
public:
string anumberbnumbercnumber(string s) {
int left=0;
int right=s.size()-1;
string number = "number";
for(int i=0;i<s.size();i++)
if(s[i]>='0'&&s[i]<='9')
{
s.insert(i, number);
i+=6;
}
return s;
}
};
题目链接/文章讲解:代码随想录
感觉今天的题目算是比较简单的,以前用了点string,还是有点好处的。 今天就是单纯打个卡。