151. 反转字符串中的单词 - 力扣(LeetCode)
class Solution {
public:string reverseWords(string s) {int n = s.size();int i = n - 1;string res;while(i >= 0){while(i >= 0 && s[i] == ' ') i--;if(i < 0) break;int j = i;while(i >= 0 && s[i] != ' ') i--;if(!res.empty()){res.push_back(' ');}res.append(s, i + 1, j - i);}return res;}
};
28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)
class Solution {
public:int strStr(string haystack, string needle) {string s = needle + '#' + haystack;int n = s.size();int m = needle.size();vector<int> prefix(n);for(int i = 1; i < n; i++){int j = prefix[i - 1];while(j > 0 && s[i] != s[j]){j = prefix[j - 1];}if(s[i] == s[j]) prefix[i] = j + 1;if(prefix[i] == m) return i - m * 2;}return -1;}
};
55. 右旋字符串(第八期模拟笔试)
#include <iostream>
using namespace std;
#include <string>
#include <algorithm>int main(){int k;cin >> k;string s;cin >> s;int n = s.size();//string res;//res = s.substr( n - k , k) + s.substr(0, n - k );//cout << res << endl;reverse(s.begin(), s.begin() + n - k);reverse(s.begin() + n - k, s.end());reverse(s.begin(), s.end());cout << s;
}
459. 重复的子字符串 - 力扣(LeetCode)
class Solution {
public:bool repeatedSubstringPattern(string s) {int n = s.length();vector<int> prefix(n);for(int i = 1; i < n; i++){int len = prefix[i - 1];while(len > 0 && s[len] != s[i]){len = prefix[len - 1];}if(s[len] == s[i]) prefix[i] = len + 1;}int res = n - prefix[n - 1];return n % res == 0 && res > 0 && res < n ;}
};