您的位置:首页 > 职场人生

微软面试100题 - 53

2016-04-19 22:12 381 查看

53.字符串的排列(字符串)。

题目:输入一个字符串,打印出该字符串中字符的所有排列。

例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串

abc、acb、bac、bca、cab和cba。

package com.algorithm.interview;

import java.util.ArrayList;

public class Premutation {
//	char[] res;
ArrayList ls = new ArrayList();
public void place(char[] arr, int start){

if(start == arr.length - 1){
ls.add(arr[start]);
for(int j = 0; j< ls.size(); j++){
System.out.print(ls.get(j)+",");
}
System.out.println();
ls.remove(ls.size() - 1);
}

for(int i = 0; i + start < arr.length; i++){
swap(arr,start,start+i);
ls.add(arr[start]);
place(arr, start+1);
ls.remove(ls.size() - 1);
this.swap(arr, start, start+i);
}
}

public void swap(char[] arr, int i, int j){
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Premutation prem = new Premutation();
char[] arr = {'a','b','c'};
prem.place(arr, 0);

}

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