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

一个面试题。。。

2013-09-12 21:27 274 查看
用1,2,2,3,4,5六个数字,组成一个6位数。

要求:

第三位数不能是2;

3和5不能相邻。

编写java程序显示所有的数字。

我自己的答案可能有点麻烦,但总归是搞出来了。。求简便的答案。。

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

import org.junit.Test;

public class TT {

/**

* 1.用1,2,2,3,4,5六个数字,组成一个6位数。

* 要求: 第三位数不能是2; 3和5不能相邻。

* 编写java程序显示所有的数字。

* 123245

*/

@Test

public void test1() {

int[] a1 = { 1, 2, 2, 3, 4, 5 };

int[] a2 = { 1, 2, 2, 3, 4, 5 };

int[] a3 = { 1, 2, 2, 3, 4, 5 };

int[] a4 = { 1, 2, 2, 3, 4, 5 };

int[] a5 = { 1, 2, 2, 3, 4, 5 };

int[] a6 = { 1, 2, 2, 3, 4, 5 };

Set<String> set = new HashSet<String>();

for (int r1 : a1) {

int j = 0;

String str = "";

str += r1;

for (int r2 : a2) {

if (str.length() >= 2) {

str = str.substring(0, 1);

}

str += r2;

for (int r3 : a3) {

if (r3 == 2) {

continue;

}

if (str.length() >= 3) {

str = str.substring(0, 2);

}

str += r3;

for (int r4 : a4) {

if (str.length() >= 4) {

str = str.substring(0, 3);

}

str += r4;

for (int r5 : a5) {

if (str.length() >= 5) {

str = str.substring(0, 4);

}

str += r5;

for (int r6 : a6) {

if (str.length() >= 6) {

str = str.substring(0, 5);

}

str += r6;

// 判断 -- 3和5 相邻的

if ((!str.matches("[1-5]*[5|3][3|5][1-5]*"))

&& str.matches("[2-5]*[1][2-5]*")

&& str.matches("[1-5]*[2][1-5]*[2][1-5]*")

&& str.matches("[1-5]*[3][1-5]*")

&& str.matches("[1-5]*[4][1-5]*")

&& str.matches("[1-4]*[5][1-4]*")) {

set.add(str);

}

}

}

}

}

}

}

Iterator<String> it = set.iterator();

int i = 0;

while (it.hasNext()) {

if (i++ % 10 == 0) {

System.out.println();

System.out.print("第"+ (i/10+1) +"行:\t");

}

System.out.print(it.next() + "\t");

}

System.out.println();

System.out.println();

System.out.println("一共"+set.size());

}

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