● 151.翻转字符串里的单词
● 今日学习的文章链接和视频链接
● 自己看到题目的第一想法
0 0
● 看完代码随想录之后的想法
双指针。先整体反转,再对每个单词进行反转
● 自己实现过程中遇到哪些困难
好难懂。。。看了讲解也不是很明白,借助文心一言终于理解了一点,但是自己写不出来,需要多复习这道题。
class Solution {
public:
void reverse(string& s, int start, int end){
for(int i = start, j = end;i<j;i++,j--){
swap(s[i],s[j]);
}
}
void removeExtraSpaces(string& s){
int slow = 0;
for(int i = 0;i<s.size();++i){
if(s[i]!=' '){
if(slow != 0) s[slow++] = ' ';
while(i<s.size() && s[i]!= ' '){
s[slow++] = s[i++];
}
}
}
s.resize(slow);
}
string reverseWords(string s) {
removeExtraSpaces(s);
reverse(s,0,s.size()-1);
int start = 0;
for(int i = 0; i<=s.size();++i){
if(i==s.size() || s[i]==' '){
reverse(s,start,i-1);
start = i+1;
}
}
return s;
}
};
● 今日收获,记录一下自己的学习时长
1h
● 卡码网:55.右旋转字符串
● 今日学习的文章链接和视频链接
● 自己看到题目的第一想法
● 看完代码随想录之后的想法
方法同上,先整体反转,再局部反转
● 自己实现过程中遇到哪些困难
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
string s;
cin >> n;
cin >> s;
int len = s.size();
reverse(s.begin(),s.end());
reverse(s.begin(),s.begin()+n);
reverse(s.begin()+n,s.end());
cout << s << endl;
}
● 今日收获,记录一下自己的学习时长
0.5h