楼主,针对这个题,用3层for 可以完成,附上代码.你看看,没写注释,但思路简单.如果不是三个字母就不行了,能力有限.用递归应该可以,楼主可以研究研究
public class Test1 {
public static void main(String[] args) {
String str = "def";
TreeSet<String> tr = new TreeSet<>(new Comparator<String>() {
public int compare(String o1, String o2) {
int num =o1.length()-o2.length();
return num == 0?1:num;
}
});
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
tr.add(arr[i]+"");
for (int j = 0; j < arr.length; j++) {
if(arr[i]!=arr[j]) {
tr.add(arr[i]+""+arr[j]);
}
for (int j2 = 0; j2 < arr.length; j2++) {
if(arr[j2] != arr[j] && arr[j2] != arr[i]&&arr[j]!= arr[i]) {
tr.add(arr[j2]+""+arr[j]+arr[i]);
}
}
}
}
for (String st : tr) {
System.out.println(st);
}
}
} |