給你一個(gè)字符串 s 揍魂,請(qǐng)你返回滿(mǎn)足以下條件且出現(xiàn)次數(shù)最大的 任意 子串的出現(xiàn)次數(shù):
子串中不同字母的數(shù)目必須小于等于 maxLetters 艺配。
子串的長(zhǎng)度必須大于等于 minSize 且小于等于 maxSize 油航。
示例 1:
```
輸入:s = "aababcaab", maxLetters = 2, minSize = 3, maxSize = 4
輸出:2
```
> 解釋?zhuān)鹤哟?"aab" 在原字符串中出現(xiàn)了 2 次野建。 它滿(mǎn)足所有的要求:2 個(gè)不同的字母罗岖,長(zhǎng)度為 3 (在 minSize 和
> maxSize 范圍內(nèi))彼城。
示例 2:
```
輸入:s = "aaaa", maxLetters = 1, minSize = 3, maxSize = 3
輸出:2
```
> 解釋?zhuān)鹤哟?"aaa" 在原字符串中出現(xiàn)了 2 次诅蝶,且它們有重疊部分。
示例 3:
```
輸入:s = "aabcabcab", maxLetters = 2, minSize = 2, maxSize = 3
輸出:3
```
示例 4:
```
輸入:s = "abcde", maxLetters = 2, minSize = 3, maxSize = 3
輸出:0
```
提示:
1 <= s.length <= 10^5
1 <= maxLetters <= 26
1 <= minSize <= maxSize <= min(26, s.length)
s 只包含小寫(xiě)英文字母精肃。
```js
/**
* @param {string} s
* @param {number} maxLetters
* @param {number} minSize
* @param {number} maxSize
* @return {number}
*/
var maxFreq = function(s, maxLetters, minSize, maxSize) {
? ? let numCount = 0;
? ? let a = []
? ? for(let k=0;k<s.length;k++){
? ? ? ? for(let i=minSize;i<=maxSize;i++){
? ? ? ? ? ? if(numCount>0 && i>minSize){
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? if(!a[i-minSize]){
? ? ? ? ? ? ? ? a[i-minSize] = {}
? ? ? ? ? ? }
? ? ? ? ? ? let c = s.substr(k,i)
? ? ? ? ? ? if(a[i-minSize][c]){
? ? ? ? ? ? ? ? a[i-minSize][c] ++
? ? ? ? ? ? ? ? if(a[i-minSize][c]>numCount){
? ? ? ? ? ? ? ? ? ? numCount = a[i-minSize][c]
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }else if(c.length == i){
? ? ? ? ? ? ? ? let difCount = countDifNum(c);
? ? ? ? ? ? ? ? if(difCount <= maxLetters){
? ? ? ? ? ? ? ? ? ? a[i-minSize][c] = 1;
? ? ? ? ? ? ? ? ? ? if(a[i-minSize][c]>numCount){
? ? ? ? ? ? ? ? ? ? ? ? numCount = a[i-minSize][c]
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return numCount
};
? //統(tǒng)計(jì)字符串中不同字母的數(shù)目
? ? function countDifNum(c){
? ? ? ? let a= {};
? ? ? ? let count = 0;
? ? ? ? for(let i=0;i<c.length;i++){
? ? ? ? ? ? if(!a[c[i]]){
? ? ? ? ? ? ? ? a[c[i]]=1;
? ? ? ? ? ? ? ? count++;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return count;
? ? }
? ```