代码随想录打卡day8
字符串1
leetcode上的344,541,剑指05,151,剑指05-II
1.c
class Solution {
public:
void reverseString(vector<char>& s) {
char temp;
int size = s.size() ;
for(int i = 0; i < size; i++){
if(i < size - i -1){
temp = s[size-1-i];
s[size-1-i] = s[i];
s[i] = temp;
}
}
}
};
2.反转字符串II
这道题我起初写的非常复杂,debug时间也不够了,直接参考了carl的,下次二刷要尽量简单化。
class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0; i < s.size(); i += 2*k){
if(i + k <= s.size()){//这个判断是让最后一组排序的时候不会因为不够k个越界
reverse(s.begin() + i, s.begin() + i+k);
}
else{
reverse(s.begin() + i, s.end());
}
}
return s;
}
};
3.剑指offer05替换空格
class Solution {
public:
string replaceSpace(string s) {
string reverseString;
string result;
for(int i = 0; i < s.size(); i++){
if(! isspace(s[i])){
reverseString.push_back(s[i]);
}
else{
reverseString.push_back('%');
reverseString.push_back('2');
reverseString.push_back('0');
}
}
for(int j = 0; j < reverseString.size(); j++){
result.push_back(reverseString[j]);
}
return result;
}
};
4.151翻转字符串里的单词
这个综合题回头二刷总结的时候做一下吧。
5.剑指offer58-II左旋转字符串
思路很简单,不浪费空间的话卡哥的思路更好如下
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;
}
};