-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfind_longest_special_substring_that_occurs_thrice_1.py
54 lines (38 loc) · 1.64 KB
/
find_longest_special_substring_that_occurs_thrice_1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
You are given a string s that consists of lowercase English letters.
A string is called special if it is made up of only a single character. For example, the string "abc" is not special, whereas the strings "ddd", "zz", and "f" are special.
Return the length of the longest special substring of s which occurs at least thrice, or -1 if no special substring occurs at least thrice.
A substring is a contiguous non-empty sequence of characters within a string.
Example 1:
Input: s = "aaaa"
Output: 2
Explanation: The longest special substring which occurs thrice is "aa": substrings "aaaa", "aaaa", and "aaaa".
It can be shown that the maximum length achievable is 2.
Example 2:
Input: s = "abcdef"
Output: -1
Explanation: There exists no special substring which occurs at least thrice. Hence return -1.
Example 3:
Input: s = "abcaba"
Output: 1
Explanation: The longest special substring which occurs thrice is "a": substrings "abcaba", "abcaba", and "abcaba".
It can be shown that the maximum length achievable is 1.
Constraints:
3 <= s.length <= 50
s consists of only lowercase English letters.
"""
class Solution:
def maximumLength(self, s: str) -> int:
def is_special(substring):
return len(set(substring)) == 1
max_length = -1
hash = defaultdict(int)
for i in range(len(s)):
for j in range(i + 1, len(s) + 1):
substring = s[i:j]
if is_special(substring):
hash[substring] = hash[substring] + 1
for x, y in hash.items():
if y >= 3:
max_length = max(max_length, len(x))
return max_length