Skip to content

Commit f69679c

Browse files
authored
Create 395-longest-substring-with-at-least-k-repeating-characters.js
1 parent 7afa66f commit f69679c

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {string} s
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
const longestSubstring = function(s, k) {
7+
if (s == null || s.length === 0) return 0;
8+
const chars = new Array(26).fill(0);
9+
const aCode = "a".charCodeAt(0);
10+
for (let i = 0; i < s.length; i++) chars[s.charCodeAt(i) - aCode] += 1;
11+
let flag = true;
12+
for (let i = 0; i < chars.length; i++) {
13+
if (chars[i] < k && chars[i] > 0) flag = false;
14+
}
15+
if (flag === true) {
16+
return s.length;
17+
}
18+
let result = 0;
19+
let start = 0;
20+
let cur = 0;
21+
while (cur < s.length) {
22+
if (chars[s.charCodeAt(cur) - aCode] < k) {
23+
result = Math.max(result, longestSubstring(s.slice(start, cur), k));
24+
start = cur + 1;
25+
}
26+
cur++;
27+
}
28+
result = Math.max(result, longestSubstring(s.slice(start), k));
29+
return result;
30+
};

0 commit comments

Comments
 (0)