第一题
344.反转字符串
class Solution {
public:
void reverseString(vector<char>& s) {
for(int i = 0 ,j = s.size() - 1; i<j;i++,j-- ){
char tmp = s[i];
s[i] =s[j];
s[j] = tmp;
}
return ;
}
};
没啥说法太基础了。。。
第二题
541. 反转字符串II
说实话这个翻转条件真的想了半天没想明白。。。 到
最后还是看了解题思路才明白,还有这个reverse本来想直接reverse(s[i-1],s.end());
一是不对称
二是如果数组小于k的话会直接出现越界。
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.end());
}
else{
reverse(s.begin()+i,s.begin() + i + k);
}
}
return s;
}
};
第三题
剑指Offer 05.替换空格 题没了。。
第四题
151.翻转字符串里的单词
用了栈去做也对了
class Solution {
public:
string reverseWords(string s) {
string t;
stack<string> st;
for(int i =0; i< s.size(); i ++){
if(s[i] == ' ')
{
if(!t.empty())
{
st.push(t);
t.clear();
}
continue;
}
else
{
t += s[i];
}
}
if(!t.empty())
{
st.push(t);
t.clear();
}
string ans;
while(!st.empty())
{
ans += st.top();
st.pop();
if(!st.empty())
{
ans += ' ';
}
}
return ans;
}
};
5.剑指Offer58-II.左旋转字符串
挺简单的