您的位置:首页 > Web前端

剑指offer28--字符串的排列

2014-10-25 22:48 537 查看
public class AllSort{

public static void main(String[] args) {

char buf[]={'a','b','c'};

perm(buf,0,buf.length-1);

}

public static void perm(char[] buf,int start,int end){

if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可(特殊情况)

for(int i=0;i<=end;i++){

System.out.print(buf[i]);

}

System.out.println();

}

else{//多个字母全排列(普遍情况)

for(int i=start;i<=end;i++){//(让指针start分别指向每一个数)

char temp=buf[start];//交换数组第一个元素与后续的元素

buf[start]=buf[i];

buf[i]=temp;

perm(buf,start+1,end);//后续元素递归全排列

temp=buf[start];//将交换后的数组还原

buf[start]=buf[i];

buf[i]=temp;

}

}

}

}

//循环实现

public class Permutation {

/*

* 输入一个字符串,打印出字符串中字符的所有排列

*/

public void permutation(String str)

{

if(str==null)

return ;

char[] output=str.toCharArray();

int point=0;

System.out.println(output);

char temp1=output[point];

output[point]=output[++point];

output[point]=temp1;

while(!String.valueOf(output).equals(str))

{

System.out.println(output);

if(point==output.length-1)

{

char temp=output[point];

output[point]=output[0];

output[0]=temp;

point=0;

}

else

{

char temp=output[point];

output[point]=output[++point];

output[point]=temp;

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: