今天的是奖励关,没什么好说的
很简单,一个reverse就能解决,不过作为练习,还是需要自己实现一遍。
如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。
如果库函数仅仅是解题过程中的一小部分,并且自己已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。
AC代码:
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0;
int right = s.size() - 1;
while (left < right) {
swap(s[left], s[right]);
left++;
right--;
}
}
};
AC代码:
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += 2*k) {
// 每次i递增2k,且只取前k个字符,
// 若i + k - 1大于s.szie(),将endIndex设置为s.size()-1
reverse(s, i, i + k - 1);
}
return s;
}
void reverse(string& s, int startIndex, int endIndex) {
// 剩余字符少于k的情况
if (endIndex >= s.size())
endIndex = s.size() - 1;
while (startIndex < endIndex) {
swap(s[startIndex], s[endIndex]);
startIndex++;
endIndex--;
}
}
};
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += (2 * k)) {
// 1. 每隔 2k 个字符的前 k 个字符进行反转
// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
if (i + k <= s.size()) {
reverse(s.begin() + i, s.begin() + i + k );
} else {
// 3. 剩余字符少于 k 个,则将剩余字符全部反转。
reverse(s.begin() + i, s.end());
}
}
return s;
}
};
AC代码:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string ReplaceCharToNumber(string s) {
string ans;
for (char c : s) {
if (c >= '0' && c <= '9') {
ans += "number";
} else {
ans += c;
}
}
return ans;
}
int main() {
string s;
cin >> s;
cout << ReplaceCharToNumber(s) << endl;
return 0;
}