链接:https://leetcode-cn.com/explore/interview/card/bytedance/242/string/1016/
代码:
class Solution { public: bool checkInclusion(string s1, string s2) { if(s1 == "") return true; if(s2 == "") return false; int len1 = s1.size(); int len2 = s2.size(); if(len1 > len2) return false; int exist[26] = {0}; for(int i = 0; i < len1; i++) { exist[s1[i]-97]++; } // for(int i = 0; i < 26; i++) { // cout << exist[i] << " "; // } // cout << endl; int flag = false; for(int i = 0; i < len2; i++) { int e2[26] = {0}; for(int j = 0; j < 26; j++) { e2[j] = exist[j]; } for(int j = i; j < len2 && j-i < len1; j++) { e2[s2[j]-97]--; } int j = 0; for(; j < 26; j++) { if(e2[j] != 0) break; } if(j == 26) { flag = true; break; } } return flag; } };
思路:对于s2 的每一个长度为s1.length的串,看他的各个字母出现频率是否与s1 的字母出现频率相同,这个时候需要预处理 s1