leetcode刷題日記1
阿新 • • 發佈:2021-07-15
438.找到字串中所有字母異位詞
給定兩個字串s和 p,找到s中所有p的異位詞的子串,返回這些子串的起始索引。不考慮答案輸出的順序。
異位詞 指字母相同,但排列不同的字串。
上程式碼
class Solution { public: vector<int> findAnagrams(string s, string p) { if(s.size()< p.size()) return {}; vector<int> vec_s(26,0),vec_p(26,0),res; int l = 0,r = -1; for(int i = 0;i < p.size();++i){ //先將p中字母遍歷一遍 vec_s[s[++r] - 'a']++; vec_p[p[i] - 'a']++; } if(vec_p == vec_s) res.push_back(l); while(r < s.size() -1){ vec_s[s[++r] - 'a']++; vec_s[s[l++] - 'a']--; if(vec_p == vec_s) res.push_back(l); } return res; } };
這個解法非常巧妙的利用vector做到了對映功能,把下標和字母對應了起來,非常巧妙值得回味