Skip to content

Commit 1f6c2dd

Browse files
committed
Time: 328 ms (5.93%), Space: 46.8 MB (7.08%) - LeetHub
1 parent 22620f5 commit 1f6c2dd

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class Solution {
2+
public String repeatLimitedString(String s, int repeatLimit) {
3+
int[] freq = new int[26];
4+
for(char ch : s.toCharArray()){
5+
freq[ch-'a']++;
6+
}
7+
StringBuilder op = new StringBuilder();
8+
int prev=-1;
9+
for(int i=25;i>=0;i--){
10+
11+
if(op.length()>=s.length()){
12+
break;
13+
}
14+
if(freq[i]==0) continue;
15+
16+
if(op.length()>0 && op.charAt(op.length()-1)!=(char)('a' + i) && prev!=-1){
17+
op.append((char)('a' + i));
18+
freq[i]--;
19+
20+
i=prev;
21+
}
22+
23+
if(freq[i]<=repeatLimit){
24+
op.append(genrate(freq[i],(char)('a' + i)));
25+
freq[i]=0;
26+
prev=-1;
27+
}
28+
else if(freq[i]>repeatLimit){
29+
freq[i]-=repeatLimit;
30+
op.append(genrate(repeatLimit,(char)('a' + i)));
31+
32+
prev=i;
33+
}
34+
}
35+
return op.toString();
36+
}
37+
public String genrate(int k,char c){
38+
String key="";
39+
while(k-->0){
40+
key+=c;
41+
}
42+
return key;
43+
}
44+
}

0 commit comments

Comments
 (0)