立志重刷代码随想录60天冲冲冲!!——第九天
151. 反转字符串中的单词
思路:先去掉多余空格,在全部反转,最后每个单词反转。
去掉多余空格对流程需要多看看
class Solution {
public:
void EraseExtraSpace(string& s) {
int slow = 0;
for (int fast = 0; fast < s.size(); fast++) {
if (s[fast] != ' ') {
// 每个单词之间加空格
if (slow != 0) s[slow++] = ' ';
while (fast < s.size() && s[fast] != ' ') {
s[slow++] = s[fast++];
}
}
}
s.resize(slow); // 去掉多余空格
}
void Reverse(string& s, int start, int end) {
for (int left = start, right = end; left < right; left++, right--) {
swap(s[left], s[right]);
}
}
string reverseWords(string s) {
EraseExtraSpace(s);
Reverse(s, 0, s.size() - 1);
int start = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' ') {
Reverse(s, start, i - 1);
start = i + 1;
} else if (i == s.size() - 1) {
Reverse(s, start, i);
}
}
return s;
}
};
55. 右旋字符串(第八期模拟笔试)
(卡码网)
#include<iostream>
using namespace std;
#include<string>
void Reverse(string& str, int start, int end) {
for (int i = start, j = end; i < j; i++, j--) {
swap(str[i], str[j]);
}
}
int main(){
int n;
string str;
cin >> n;
cin >> str;
Reverse(str, 0, str.size() - 1);
Reverse(str, 0, n-1);
Reverse(str, n, str.size() - 1);
cout << str;
}
28. 实现 strStr()
KMP致命缺点!!每天加班太晚了,周末补更!!
459.重复的子字符串
周末补更!!
代码随想录更新 文章被收录于专栏
冲冲冲冲冲冲!
