立志重刷代码随想录60天冲冲冲!!——第八天
344. 反转字符串
没啥好说的,双指针秒
class Solution {
public:
void reverseString(vector<char>& s) {
for (int left = 0, right = s.size() - 1; left < right; left++, right--) {
swap(s[left], s[right]);
}
}
};
541. 反转字符串 II
库函数reverse()需要使用迭代器
class Solution {
public:
string reverseStr(string s, int k) {
int n = s.size();
for (int i = 0; i < s.size(); i += 2*k) {
reverse(s.begin() + i, s.begin() + min(i + k, n));//使用迭代器!!
}
return s;
}
};
54. 替换数字(第八期模拟笔试)
卡码网
双指针解法,尾插法
ACM需要加强
#include <iostream>
using namespace std;
int main() {
string s;
while (cin >> s) {
// 统计数字个数
int count = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] >= '0' && s[i] <= '9') {
count++;
}
}
int sOldLen = s.size() - 1;
s.resize(s.size() + 5 * count);
int sNewLen = s.size() - 1;
while (sOldLen >= 0) {
if (s[sOldLen] >= '0' && s[sOldLen] <= '9') {
s[sNewLen--] = 'r';
s[sNewLen--] = 'e';
s[sNewLen--] = 'b';
s[sNewLen--] = 'm';
s[sNewLen--] = 'u';
s[sNewLen--] = 'n';
} else {
s[sNewLen--] = s[sOldLen];
}
sOldLen--;
}
}
cout << s << endl;
}
代码随想录更新 文章被收录于专栏
冲冲冲冲冲冲!
迅雷公司福利 193人发布