1297 子串的最大出現次數

2021-10-18 13:18:04 字數 1546 閱讀 9000

題目描述:

給你乙個字串 s ,請你返回滿足以下條件且出現次數最大的 任意 子串的出現次數:

子串中不同字母的數目必須小於等於 maxletters 。

子串的長度必須大於等於 minsize 且小於等於 maxsize 。

示例 1:

輸入:s = 「aababcaab」, maxletters = 2, minsize = 3, maxsize = 4

輸出:2

解釋:子串 「aab」 在原字串**現了 2 次。

它滿足所有的要求:2 個不同的字母,長度為 3 (在 minsize 和 maxsize 範圍內)。

示例 2:

輸入:s = 「aaaa」, maxletters = 1, minsize = 3, maxsize = 3

輸出:2

解釋:子串 「aaa」 在原字串**現了 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 只包含小寫英文本母。

方法1:

(1)將可能出現的滿足要求的子字串存入到 unordered_mapmp 中,最後找出mp中字串最多的個數;

class

solution}if

(j-i+

1>=minsize)}}

for(

auto

&it:mp)

return res;}}

;

方法2:

主要思路:

(1)這個主要是理解最短的滿足要求的字串的數量一定大於等於後續再變長的字串,故只需要統計最短的滿足要求的字串的數量;

class

solution

++right;

}while

(rightsize()

)if(counts_char<=maxletters)

--counts[s[left]

-'a'];

if(counts[s[left]

-'a']==

0)//改變視窗的範圍

++right;

++left;

}for

(auto

&it:mp)

return res;}}

;

1297 子串的最大出現次數

給你乙個字串s,請你返回滿足以下條件且出現次數最大的任意子串的出現次數 示例 1 輸入 s aababcaab maxletters 2,minsize 3,maxsize 4輸出 2解釋 子串 aab 在原字串 現了 2 次。它滿足所有的要求 2 個不同的字母,長度為 3 在 minsize 和 ...

1297 子串的最大出現次數

給你乙個字串 s 請你返回滿足以下條件且出現次數最大的 任意 子串的出現次數 子串中不同字母的數目必須小於等於 maxletters 子串的長度必須大於等於 minsize 且小於等於 maxsize 示例 1 輸入 s aababcaab maxletters 2,minsize 3,maxsiz...

LeetCode 1297 子串的最大出現次數

給你乙個字串 s 請你返回滿足以下條件且出現次數最大的 任意 子串的出現次數 示例 1 輸入 s aababcaab maxletters 2,minsize 3,maxsize 4輸出 2 解釋 子串 aab 在原字串 現了 2 次。它滿足所有的要求 2 個不同的字母,長度為 3 在 minsiz...