344. Reverse String
最基础的旋转字符串
class Solution {
public:
void reverseString(vector<char>& s) {
if(s.empty())
return;
int start = ;
int end = s.size() - ;
while(start < end){
char tmp = s[end];
s[end] = s[start];
s[start] = tmp;
start++;
end--;
}
return;
}
};
541. Reverse String II
旋转k个字符,然后间隔k个字符不旋转,再旋转k个字符。z
注意:一般最后都会剩下几个不够k个的字符,如果这些字符的前一次字符进行了旋转,就不旋转;如果前一次没有进行旋转,就需要旋转。其实就是奇数次旋转,偶数次不旋转
class Solution {
public:
string reverseStr(string s, int k) {
if(s.empty())
return "";
int m = s.size()/k;
int i = ;
for(;i < m;i++){
if(i % == )
reverse(s,i*k,(i+)*k - );
}
if(i % == )
reverse(s,i*k,s.size()-);
return s;
}
void reverse(string& s,int start,int end){
while(start < end){
char tmp = s[end];
s[end] = s[start];
s[start] = tmp;
start++;
end--;
}
return;
}
};
796. Rotate String
暴力方法就是将A每个位置就行旋转然后和B进行比较判断
本方法:如果A、B个数相等,如果(A+A)中包含B的话,说明A一定能通过偏移得到B
class Solution {
public:
bool rotateString(string A, string B) {
return A.size() == B.size() && (A + A).find(B) != string::npos;
}
};
http://www.cnblogs.com/grandyang/p/9251578.html
string的find函数找不到返回的是npos,不是true、false,也不是-1
https://blog.csdn.net/qq_33933704/article/details/79188028