反转字符串 (简单题)
class Solution {
public:
//双指针法,参考反转链表思想
void reverseString(vector<char>& s) {
for(int i=0,j = s.size() - 1;i < s.size()/2 ;i++,j--)
{
swap(s[i],s[j]);
}
}
};
反转字符串2,(难度稍微提升)
思路:
本题的关键在于,寻找前2k个 的前k个反转的判断边界表达。
我们只需要对 for 循环遍历的时候稍加思考:
让 i += (2*k) ,遍历的时候 i 每次移动2k 个位置,再判断是否需要反转区间就行。
class Solution {
public:
string reverseStr(string s, int k) {
for(int i = 0;i < s.size() - 1; i += (2*k))
{
if(i+k <= s.size())
{
reverse(s.begin()+i,s.begin()+i+k);
}
reverse(s.begin()+i,s.begin()+s.size());
}
return s;
}
};