test
This commit is contained in:
parent
b86b207218
commit
93bf1f6a03
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* @lc app=leetcode.cn id=3333 lang=java
|
||||
* @lcpr version=30201
|
||||
*
|
||||
* [3333] 找到初始输入字符串 II
|
||||
*/
|
||||
|
||||
// @lc code=start
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
class Solution {
|
||||
public int possibleStringCount(String word, int k) {
|
||||
// 将原字符串转为数组,单字母连续出现的次数为数组中的元素,遇到一个新字母结算一个数组元素[]{a:3,b:3,a:4} {3,3,4}
|
||||
// k的最小值即为数组长度,记为m,即至少每个出现连续块的字母取一次
|
||||
// k向上增加时,即k-m个数需要被分配,此为递归
|
||||
List<Integer> wordArr = new ArrayList<>();
|
||||
int i = 0;
|
||||
int sum = 0;
|
||||
char c = word.charAt(i);
|
||||
while (i < word.length()) {
|
||||
if (word.charAt(i) != c) {
|
||||
wordArr.add(sum);
|
||||
c = word.charAt(i);
|
||||
sum = 0;
|
||||
}
|
||||
sum++;
|
||||
i++;
|
||||
}
|
||||
// 最多再分配k - wordArr.size()
|
||||
int result = 0;
|
||||
for (int remain = 0; remain < word.length(); remain++) {
|
||||
result += dfs(wordArr, 0, word.length() - wordArr.size());
|
||||
}
|
||||
return result % (10^9+7);
|
||||
}
|
||||
|
||||
private int dfs(List<Integer> wordArr, int index, int remain) {
|
||||
// 字母分配完毕
|
||||
if (remain == 0) {
|
||||
return 1;
|
||||
}
|
||||
// 不可再分配
|
||||
if (index >= wordArr.size()) {
|
||||
return 0;
|
||||
}
|
||||
int sum = 0;
|
||||
for (int i = 0; i <= wordArr.get(index); i++) {
|
||||
sum += dfs(wordArr, index + 1, remain - i);
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
// No3333 no = new No3333();
|
||||
// System.out.println(no.possibleStringCount("aaabbb", 3));
|
||||
while (true) {
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
// @lc code=end
|
||||
|
||||
|
||||
|
||||
/*
|
||||
// @lcpr case=start
|
||||
// "aabbccdd"\n7\n
|
||||
// @lcpr case=end
|
||||
|
||||
// @lcpr case=start
|
||||
// "aabbccdd"\n8\n
|
||||
// @lcpr case=end
|
||||
|
||||
// @lcpr case=start
|
||||
// "aaabbb"\n3\n
|
||||
// @lcpr case=end
|
||||
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue