题目:剑指Offer58-II.左旋转字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/5627e72b1f114c14b42ae966b2b42c27.png)
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;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/125c01c2568d4d03ba3f614741822769.png)
28. 实现 strStr()
![在这里插入图片描述](https://img-blog.csdnimg.cn/2446073a4b9242b4a848e41c9b2c92a9.png)
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;
}
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/92b2c5a5786b4121a66c5d2607a04d7f.png)
459.重复的子字符串
自己加自己,掐头去尾找自己!
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf6ea987bf024d66a1d68ccaac748ebe.png)
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;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/ece30726856441558d0dd2751722dda0.png)