344.反转字符串
● 今日学习的文章链接和视频链接
● 自己看到题目的第一想法
感觉像双指针。每次从最左拎出来一个,然后把最右的放在最左,再把最左的放到最右,再往中间移动一个,依次进行。
● 看完代码随想录之后的想法
差不多。没想到交换直接用swap就行,我还是学的太少了= =
● 自己实现过程中遇到哪些困难
class Solution {
public:
void reverseString(vector<char>& s) {
int left=0,right=s.size()-1;
while(left<right){
swap(s[left++],s[right--]);
}
}
};
● 今日收获,记录一下自己的学习时长
0.5h
541. 反转字符串II
● 今日学习的文章链接和视频链接
● 自己看到题目的第一想法
emm,懵
● 看完代码随想录之后的想法
因为是2k一组,循环一次i+2k。
● 自己实现过程中遇到哪些困难
class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0;i<s.size();i += (2*k)){
if(i+k <= s.size()){
reverse(s.begin()+i,s.begin()+i+k);
}else{
reverse(s.begin()+i,s.end());
}
}
return s;
}
};
● 今日收获,记录一下自己的学习时长
0.5h
54.替换数字
● 今日学习的文章链接和视频链接
● 自己看到题目的第一想法
0 0
● 看完代码随想录之后的想法
先预先给数组扩容带填充后的大小,然后在从后向前进行操作。
● 自己实现过程中遇到哪些困难
代码我总是自己打不出来。。得先看着打一遍,虽然这样之后也不一定自己打得出来。特别是代码长的= =
#include<iostream>
using namespace std;
int main(){
string s;
while(cin>>s){
int sOldIndex = s.size()-1;
int count = 0;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
count++;
}
}
s.resize(s.size()+count*5);
int sNewIndex = s.size()-1;
while(sOldIndex >= 0){
if(s[sOldIndex]>='0'&&s[sOldIndex]<='9'){
s[sNewIndex--]='r';
s[sNewIndex--]='e';
s[sNewIndex--]='b';
s[sNewIndex--]='m';
s[sNewIndex--]='u';
s[sNewIndex--]='n';
}else{
s[sNewIndex--]=s[sOldIndex];
}
sOldIndex--;
}
cout<<s<<endl;
}
}
● 今日收获,记录一下自己的学习时长
0.5h