java字符串排列组合有重复
时间: 2023-09-25 20:13:32 浏览: 117
Java中可以使用递归来实现字符串的排列组合,如果需要考虑字符串中有重复字符的情况,可以在递归过程中使用Set来去重。下面是一个示例代码:
```java
import java.util.HashSet;
import java.util.Set;
public class StringPermutation {
public static Set<String> permutation(String str) {
Set<String> set = new HashSet<String>();
if (str == null || str.length() == 0) {
return set;
}
permutation(str.toCharArray(), 0, set);
return set;
}
private static void permutation(char[] array, int start, Set<String> set) {
if (start == array.length) {
set.add(new String(array));
} else {
for (int i = start; i < array.length; i++) {
swap(array, start, i);
permutation(array, start + 1, set);
swap(array, start, i);
}
}
}
private static void swap(char[] array, int i, int j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public static void main(String[] args) {
String str = "aabb";
Set<String> set = permutation(str);
System.out.println(set);
}
}
```
在上面的代码中,permutation方法中调用了另一个私有方法permutation来实现排列组合的递归操作。在每一次递归操作中,我们都使用swap方法来交换数组中的元素,以获取不同的排列组合。最后,我们将所有的排列组合添加到Set中,以去重并返回结果。
阅读全文