344.反转字符串
reverse函数的实现
void reverseString(vector<char>& s) {
//左右调转
int length = s.size();
for (int i = 0; i < length >> 1; i++)
swap(s[i], s[length - i - 1]);
}
541. 反转字符串II
string reverseStr(string s, int k) {
int length = s.size();
int i;
for (i = 0; i < length; i += k * 2)
{
if (i + k <= length)
reverse(s.begin() + i, s.begin() + i + k);
else
reverse(s.begin() + i, s.end());
}
return s;
}
卡码网:替换数字
1.使用辅助空间
#include <iostream>
using namespace std;
int main()
{
string str;
string str2;
cin >> str;
for (auto& c : str)
{
if (c >= '0' && c <= '9')
str2.append("number");
else
str2.push_back(c);
}
cout << str2 << endl;
}
151.翻转字符串里的单词
string reverseWords(string s) {
vector<string> word;
int i, j = 0;
while (s[j] == ' ') j++;
i = j;
while (j < s.size())
{
while (j < s.size() && isalnum(s[j])) j++;
word.push_back(string(s.begin() + i, s.begin() + j));
if (j >= s.size()) break;
while (s[++j] == ' ');
i = j;
}
reverse(word.begin(), word.end());
string res;
for (auto it = word.begin(); it != word.end(); it++)
{
res += *it;
cout << *it << endl;
if (it + 1 != word.end())
res += " ";
}
return res;
}
卡码网:55.右旋转字符串
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int k;
string s;
cin >> k;
cin >> s;
reverse(s.begin(), s.end());
reverse(s.begin(), s.begin() + k);
reverse(s.begin()+ k, s.end());
cout << s << endl;
return 0;