经典面试题解答

2019PHP高薪工程师学习路线图....>>>

用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
package test1;

import java.util.ArrayList;
import java.util.List;

public class TestList2 {
	//用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
	public static void main(String[] args) {
		List<String> l = new ArrayList<String>();
		l.add("1");l.add("2");l.add("2");l.add("3");l.add("4");l.add("5");
		List<String> l1 = new ArrayList<String>();
		List<String> l2 = new ArrayList<String>();
		List<String> l3 = new ArrayList<String>();
		List<String> l4 = new ArrayList<String>();
		List<String> l5 = new ArrayList<String>();
		List<String> rel = new ArrayList<String>();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < l.size(); i++) {
			sb.append(l.get(i));
			String n1 = l.remove(i);
			l1 = l;
			for (int j = 0; j < l1.size(); j++) {
				sb.append(l1.get(j));
				String n2 = l1.remove(j);
				l2 = l1;
				for (int j2 = 0; j2 < l2.size(); j2++) {
					sb.append(l2.get(j2));
					String n3 = l2.remove(j2);
					l3 = l2;
					for (int k = 0; k < l3.size(); k++) {
						sb.append(l3.get(k));
						String n4 = l3.remove(k);
						l4 = l3;
						for (int k2 = 0; k2 < l4.size(); k2++) {
							sb.append(l4.get(k2));
							String n5 = l4.remove(k2);
							l5 = l4;
							for (int m = 0; m < l5.size(); m++) {
								sb.append(l.get(m));
								String n6 = l5.remove(m);
								System.out.println(sb.toString());
								if (!rel.contains(sb.toString()) && sb.toString().indexOf("4")!=2 && !sb.toString().contains("35") && !sb.toString().contains("53")) {
									rel.add(sb.toString());
								}
								sb.delete(sb.length()-1, sb.length());
								l5.add(m, n6);
							}
							sb.delete(sb.length()-1, sb.length());
							l4.add(k2, n5);
						}
						sb.delete(sb.length()-1, sb.length());
						l3.add(k, n4);
					}
					sb.delete(sb.length()-1, sb.length());
					l2.add(j2, n3);
				}
				sb.delete(sb.length()-1, sb.length());
				l1.add(j, n2);
			}
			sb.delete(sb.length()-1, sb.length());
			l.add(i, n1);
		}
		System.out.println(rel.size());
		System.out.println(rel.toString());
	}
	

}