kk
This commit is contained in:
40
src/main/java/com/dota/map/Solution.java
Normal file
40
src/main/java/com/dota/map/Solution.java
Normal file
@@ -0,0 +1,40 @@
|
||||
package com.dota.map;
|
||||
|
||||
/**
|
||||
* 构造限制重复的字符串
|
||||
*/
|
||||
class Solution {
|
||||
|
||||
public String repeatLimitedString(String s, int repeatLimit) {
|
||||
var dp = new int[26];
|
||||
for (char c : s.toCharArray()) {
|
||||
dp[c - 'a']++;
|
||||
}
|
||||
|
||||
var res = new StringBuilder();
|
||||
var i = 25;
|
||||
while (i >= 0) {
|
||||
if (dp[i] > repeatLimit) {
|
||||
res.append(String.valueOf((char) ('a' + i)).repeat(repeatLimit));
|
||||
dp[i] -= repeatLimit;
|
||||
|
||||
var j = i - 1;
|
||||
while (j >= 0 && dp[j] == 0) {
|
||||
j--;
|
||||
}
|
||||
|
||||
if (j == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
res.append((char)('a' + j));
|
||||
dp[j]--;
|
||||
} else {
|
||||
res.append(String.valueOf((char) ('a' + i)).repeat(dp[i]));
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
return res.toString();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user