编写带有下列声明的例程
public void permute(String str);
private void permute(char [] str,int low,int high);
第一个例程是一个驱动程序,它调用第二个例程并显示String str中字符的所有排列。如果str是
“abc”,那么输出的串是abc,acb,bac,bca,cab,cba.第二个例程使用递归。
------解决方案--------------------
记得结帖~
public class TestPermute {
static long count = 0;
public static void main(String[] args) {
TestPermute tp = new TestPermute();
tp.permute( "abcdefg ");
System.out.println(count);
}
public void permute(String str) {
permute(str.toCharArray(), 0, str.length()-1);
}
private void permute(char[] str, int low, int high) {
for (int i = low; i <= high; i++) {
swap(str, low, i);
if (low + 1 == high) {
System.out.println(new String(str));
count++;
} else
permute(str, low + 1, high);
swap(str, i, low);
}
}
private void swap(char[] str, int low, int high) {
char temp = str[low];
str[low] = str[high];
str[high] = temp;
}
}