public class E38Permutation {
//打印字符串中字符的全排列
//将字符串分为第一个字符和剩下地字符两部分
public static void permutation(String str){
if (str == null)
return;
char[] chars = str.toCharArray();
permutation(chars, 0);
}
private static void permutation(char[] chars, int begin){
if (begin >= chars.length) {
//print
print(chars);
}
else{
for (int i = begin; i < chars.length; i++){
//交换
char temp = chars[begin];
chars[begin] = chars[i];
chars[i] = temp;
//排列第二部分
permutation(chars, begin + 1);
//交换回来便于继续与下一个字符交换
temp = chars[i];
chars[i] = chars[begin];
chars[begin] = temp;
}
}
}
private static void print(char[] chars){
StringBuilder builder = new StringBuilder();
for (char c : chars)
builder.append(c);
System.out.println(builder.toString());
}
//测试用例
public static void main(String[] args){
String str = "abc";
E38Permutation.permutation(str);
}
}
字符串的排列(Java实现)
最新推荐文章于 2023-05-09 11:47:23 发布