Buttercola: Zenefits: Combinations
找出一个string里面长度为n (n小于等于string的长度)的所有组合。
这个比较简单 考虑了一下dupilcate 字母
Read full article from Buttercola: Zenefits: Combinations
找出一个string里面长度为n (n小于等于string的长度)的所有组合。
这个比较简单 考虑了一下dupilcate 字母
public
List<String> combination(String s,
int
k) {
List<String> result =
new
ArrayList<>();
if
(s ==
null
|| s.length() ==
0
|| k <=
0
) {
return
result;
}
StringBuffer sb =
new
StringBuffer();
combinationHelper(
0
, s,
0
, k, sb, result);
return
result;
}
private
void
combinationHelper(
int
start, String s,
int
num,
int
k, StringBuffer sb, List<String> result) {
if
(num == k) {
result.add(sb.toString());
return
;
}
for
(
int
i = start; i < s.length(); i++) {
sb.append(s.charAt(i));
combinationHelper(i +
1
, s, num +
1
, k, sb, result);
sb.deleteCharAt(sb.length() -
1
);
}
}
public
static
void
main(String[] args) {
Solution solution =
new
Solution();
String s =
"abcd"
;
List<String> result = solution.combination(s,
2
);
for
(String i : result) {
System.out.println(i);
}
}