classSolution{public:intisPrefixOfWord(string sentence, string searchWord){int pst =0;int n = sentence.size();int ss = searchWord.size();int sub =1;while(pst != n){if(sentence[pst]==' '){
pst++;continue;}if(sentence.substr(pst, ss)== searchWord){return sub;}else{while(pst != n && sentence[pst]!=' ') pst++;
sub++;}}return-1;}};
290. 单词规律
代码实现(自解)
classSolution{public:boolwordPattern(string s, string pattern){int ps =0;int pp =0;int left, right;
map<char, string> mapping;
set<string> st;int n = pattern.size();while(pp != n){if(pattern[pp]==' '){
pp++;continue;}
left = pp;
right = left;while(right != n && pattern[right]!=' '){
right++;}if(!mapping.count(s[ps])){if(st.count(pattern.substr(left, right - left)))returnfalse;
st.emplace(pattern.substr(left, right - left));
mapping[s[ps]]= pattern.substr(left, right - left);}elseif(mapping[s[ps]]!= pattern.substr(left, right - left))returnfalse;
pp = right;
ps++;}if(ps != s.size())returnfalse;returntrue;}};
763. 划分字母区间
代码实现(自解)
classSolution{public:
vector<int>partitionLabels(string s){
map<char,int> left;
map<char,int> right;
vector<int> ans;for(char c : s){
right[c]++;}int i =1;for(char c : s){
left[c]++;
right[c]--;if(!right[c]){bool flag =true;for(auto pa : left){if(right[pa.first]!=0){
flag =false;}}if(flag){
ans.push_back(i);
i =0;}}
i++;}return ans;}};