Problem 8 All Subset II of Size K
Method 1: 加或者不加
public class Solution {
public List<String> subSetsIIOfSizeK(String set, int k) {
// sanity check
List<String> result = new ArrayList<String>();
if (set == null) {
return result;
}
char[] arraySet= set.toCharArray();
Arrays.sort(arraySet);
StringBuilder curResult = new StringBuilder();
helper(result, curResult, 0, k, arraySet);
return result;
}
private void helper(List<String> result, StringBuilder curResult, int curIndex, int setSize, char[] arraySet) {
if (curResult.length() == setSize) {
result.add(new String(curResult));
return;
}
if (curIndex == arraySet.length) {
return;
}
// // add
// curResult.append(arraySet[curIndex]);
// helper(result, curResult, curIndex + 1, setSize, arraySet);
// curResult.deleteCharAt(curResult.length() - 1);
// // not add
// while (curIndex + 1 < arraySet.length && arraySet[curIndex] == arraySet[curIndex + 1]) {
// curIndex++;
// }
// helper(result, curResult, curIndex + 1, setSize, arraySet);
int originalIndex = curIndex;
while (curIndex < arraySet.length - 1 && arraySet[curIndex] == arraySet[curIndex + 1]) {
curIndex++;
}
helper(result, curResult, curIndex + 1, setSize, arraySet);
curIndex = originalIndex;
curResult.append(arraySet[curIndex]);
helper(result, curResult, curIndex + 1, setSize, arraySet);
curResult.deleteCharAt(curResult.length() - 1);
}
}解法可参照problem 1
Method 2: 每一次都加?
Last updated