publicclass Q28 {
/**
* 题目:字符串的排列
* 题目说明:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符串a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba.
* 解题思路:1)首先求出在第一个位置上可能出现的字符,即把第一个字符和后面所有的字符逐一交换。
* 2)固定第一个字符,求后面所有字符的排列。仍然将其分为两部分。
*/
publicstatic void main(String[] args) {
Q28 test = new Q28();
test.stringSort("abcde");
}
publicvoid stringSort(String str){
int count = 0;//统计该字符串所有可能排列的种数
if(str ==null){//对字符串合法性进行判断
return ;
}
char[] chs = str.toCharArray();//将字符串转换成字符数组
int point = 0;//当前操作字符串的首字符位置
System.out.println(chs);
count++;
char temp1 = chs[point];//
chs[point] = chs[++point];//执行完该句后,point加1
chs[point] = temp1;//该句中的point和上一句的point不一样
while(!String.valueOf(chs).equals(str)){
System.out.println(chs);
count++;
if(point == chs.length-1){//要遍历的字符数组还剩最后一位时,执行的操作
char temp = chs[point];
chs[point] = chs[0];
chs[0] = temp;
point = 0;
}else{//对剩余字符串的操作
char temp = chs[point];
chs[point] = chs[++point];
chs[point] = temp;
}
}
System.out.println(count);
}
}
Q28:字符串的排序
最新推荐文章于 2023-03-07 15:24:25 发布