344.反转字符串 Reverse String
基础的字符串题目
class Solution {
public:
void reverseString(vector<char>& s) {
int i = 0;
int j = s.size() - 1;
while (i < j){
swap(s[i],s[j]);
i++;
j--;
}
}
};541. 反转字符串II Reverse String II
例子:
abcdefgz 如果k=3 那么我们需要进行2k的字符中前k个字符进行翻转成cbadefgz
如果最后剩下不到k个 那就全部进行反转 : cbadefzg
如果是abcdefgzjj 那么就反转前k个 : cbadefjzgj
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += (2 * k)){
if (i + k <= s.size()){
reverse(s.begin()+i , s.begin() + i + k);
continue;
}
reverse(s.begin() + i, s.end());
}
return s;
}
};剑指Offer 05.替换空格
class Solution {
public:
string replaceSpace(string s) {
string res;
for (int i = 0; i < s.size(); i++){
if (s[i] == ' '){
res += "%20";
} else {
res += s[i];
}
}
return res;
}
};151.翻转字符串里的单词 Reverse Words in a String
没看老师的解题 自己写的方法
class Solution {
public:
string reverseWords(string s) {
int len = s.size();
int count = 0;
string res;
for (int i = len -1 ; i >= 0 ; i--){
if (s[i] != ' '){
count++;
} else {
res.append(s,i+1,count);
if (count > 0){
res+=" ";
}
count = 0;
}
}
//如果s一开始不是空格
if (s[0] != ' '){
res.append(s,0,count);
}
//如果最后多出空格,取消一个
int lensize = res.size();
if (res[lensize - 1] == ' '){
res.erase(res.size() - 1);
}
return res;
}
};剑指Offer58-II.左旋转字符串
用额外空间
class Solution {
public:
string reverseLeftWords(string s, int n) {
string res;
int len = s.size();
res.append(s,n,len-n);
res.append(s,0,n);
return res;
}
};翻转字符串:
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverse(s.begin(), s.begin() + n);
reverse(s.begin() + n, s.end());
reverse(s.begin(), s.end());
return s;
}
};
文章展示了多个C++实现的字符串处理问题,包括反转字符串、反转字符串中的单词、替换空格、左旋转字符串等,这些都是基于字符串操作的算法题目。

被折叠的 条评论
为什么被折叠?



