Skip to content

Commit

Permalink
➕1286.字母组合迭代器.java
Browse files Browse the repository at this point in the history
  • Loading branch information
0xcaffebabe committed Jul 22, 2024
1 parent 0425415 commit 9b5e760
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,7 @@
1277 | [1277.统计全为 1 的正方形子矩阵](/%E7%AE%97%E6%B3%95/1001-1500/1277.%E7%BB%9F%E8%AE%A1%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%AD%A3%E6%96%B9%E5%BD%A2%E5%AD%90%E7%9F%A9%E9%98%B5/1277.%E7%BB%9F%E8%AE%A1%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%AD%A3%E6%96%B9%E5%BD%A2%E5%AD%90%E7%9F%A9%E9%98%B5.java)
1281 | [1281.整数的各位积和之差](/%E7%AE%97%E6%B3%95/1001-1500/1281.%E6%95%B4%E6%95%B0%E7%9A%84%E5%90%84%E4%BD%8D%E7%A7%AF%E5%92%8C%E4%B9%8B%E5%B7%AE/1281.%E6%95%B4%E6%95%B0%E7%9A%84%E5%90%84%E4%BD%8D%E7%A7%AF%E5%92%8C%E4%B9%8B%E5%B7%AE.java)
1282 | [1282.用户分组](/%E7%AE%97%E6%B3%95/1001-1500/1282.%E7%94%A8%E6%88%B7%E5%88%86%E7%BB%84/1282.%E7%94%A8%E6%88%B7%E5%88%86%E7%BB%84.java)
1286 | [1286.字母组合迭代器](/%E7%AE%97%E6%B3%95/1001-1500/1286.%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88%E8%BF%AD%E4%BB%A3%E5%99%A8/1286.%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88%E8%BF%AD%E4%BB%A3%E5%99%A8.java)
1287 | [1287.有序数组中出现次数超过-25-的元素](/%E7%AE%97%E6%B3%95/1001-1500/1287.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E8%B6%85%E8%BF%87-25-%E7%9A%84%E5%85%83%E7%B4%A0/1287.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E8%B6%85%E8%BF%87-25-%E7%9A%84%E5%85%83%E7%B4%A0.java)
1289 | [1289.下降路径最小和 II](/%E7%AE%97%E6%B3%95/1001-1500/1289.%E4%B8%8B%E9%99%8D%E8%B7%AF%E5%BE%84%E6%9C%80%E5%B0%8F%E5%92%8C%20%20II/1289.%E4%B8%8B%E9%99%8D%E8%B7%AF%E5%BE%84%E6%9C%80%E5%B0%8F%E5%92%8C%20%20II.java)
1290 | [1290. 二进制链表转整数](/%E7%AE%97%E6%B3%95/1001-1500/1290.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%93%BE%E8%A1%A8%E8%BD%AC%E6%95%B4%E6%95%B0)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* @lc app=leetcode.cn id=1286 lang=java
* @lcpr version=
*
* [1286] 字母组合迭代器
*
* 17/17 cases passed (10 ms)
* Your runtime beats 100 % of java submissions
* Your memory usage beats 21.21 % of java submissions (44.8 MB)
*/


// @lcpr-template-start

// @lcpr-template-end
// @lc code=start

import java.util.ArrayList;
import java.util.List;

class CombinationIterator {

private List<String> data = new ArrayList<>();
char[] chars;
int n;
int cur = 0;

public CombinationIterator(String characters, int combinationLength) {
this.n = combinationLength;
this.chars = characters.toCharArray();
bt(new StringBuilder(), -1);
}

void bt(StringBuilder sb, int s) {
if (sb.length() == n) {
data.add(sb.toString());
return;
}
for(int i = s + 1; i < chars.length; i++) {
sb.append(chars[i]);
bt(sb, i);
sb.deleteCharAt(sb.length() - 1);
}
}

public String next() {
return data.get(cur++);
}

public boolean hasNext() {
return cur < data.size();
}
}

/**
* Your CombinationIterator object will be instantiated and called as such:
* CombinationIterator obj = new CombinationIterator(characters, combinationLength);
* String param_1 = obj.next();
* boolean param_2 = obj.hasNext();
*/
// @lc code=end



/*
// @lcpr case=start
// ["CombinationIterator", "next", "hasNext", "next", "hasNext", "next", "hasNext"]\n
// [["abc", 2], [], [], [], [], [], []]\n
// ["CombinationIterator", "next", "hasNext"]\n
// [["a", 1], [], []]\n
// @lcpr case=end
*/

0 comments on commit 9b5e760

Please sign in to comment.