题目:剑指Offer58-II.左旋转字符串

class Solution {
public:
string reverseLeftWords(string s, int n) {
string s1(s.begin(), s.begin()+n);
string s2(s.begin()+n, s.end());
return s2+s1;
}
};

28. 实现 strStr()

class Solution {
public:
void get_next(vector<int>& next, const string& str)
{
int j = 0;
int k = -1;
next[j] = k;
while (j < str.size() - 1)
{
if (-1 == k || str[j] == str[k])
{
j++;
k++;
next[j] = k;
}
else
{
k = next[k];
}
}
}
public:
int strStr(string haystack, string needle) {
vector<int> next(needle.size(), 0);
get_next(next, needle);
int i = 0;
int j = 0;
int size1 = haystack.size();
int size2 = needle.size();
while (i < size1 && j < size2)
{
if (-1 == j || haystack[i] == needle[j])
{
i++;
j++;
}
else
{
j = next[j];
}
}
if (j == needle.size())
{
return i - j;
}
else
{
return -1;
}
}
};

459.重复的子字符串
自己加自己,掐头去尾找自己!

class Solution {
public:
bool repeatedSubstringPattern(string s) {
string s1(s+s);
string s2 = s1.substr(1, 2*s.size() - 2);
if(s2.find(s) == -1)
{
return false;
}
return true;
}
};
