Skip to content

Commit c923588

Browse files
committed
Time: 53 ms (11.82%), Space: 45.3 MB (63.91%) - LeetHub
1 parent dd4f9ac commit c923588

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

2516-take-k-of-each-character-from-left-and-right/2516-take-k-of-each-character-from-left-and-right.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
class Solution {
22
public int takeCharacters(String s, int k) {
3+
// Sliding window
4+
// TC : O(n)
5+
// SC : O(n)
6+
7+
38
int n = s.length();
9+
//edge case
410
if(s.length() <k*3){
511
return -1;
612
}
@@ -12,16 +18,13 @@ public int takeCharacters(String s, int k) {
1218
for(char ch : s.toCharArray()){
1319
map.put(ch , map.getOrDefault(ch,0)+1);
1420
}
15-
21+
//check
1622
if(map.getOrDefault('a',0)<k || map.getOrDefault('b',0)<k || map.getOrDefault('c',0)<k){
1723
return -1;
1824
}
1925

2026
int ans = n;
21-
22-
int start=0;
23-
int end=0;
24-
int window=0;
27+
int start=0,end=0,window=0;
2528
while(end<s.length()){
2629
char ch =s.charAt(end);
2730
map.put(ch, map.get(ch)-1);

0 commit comments

Comments
 (0)