不归家的夜

导航

面试算法题

A、B均为一个五位数且满足以下条件:

1、  A+20085=B

2、A里面的所有数字不重复

3、B里面的所有数字不重复

4、A与B之间的数字不能重复

即A、B这两个五位数是由0~9十个数字组成的相互之间不重复的数且满足A+20085=B

求打印满足条件的A、B

public class sum {

	public static void main(String[] args) {
		for (int i = 10234; i < 99999-20085; i++) {
			char [] charArray = String.valueOf(i).toCharArray();
			boolean boo = true;
			boo = checkOne(charArray);
			if (!boo) {
				continue;
			}
			int res = i+20085;
			char [] charArray02 = String.valueOf(res).toCharArray();
			boo = checkOne(charArray02);
			if (!boo) {
				continue;
			}
			boo = checkTwo(charArray, charArray02);
			if (!boo) {
				continue;
			}
			System.out.println(i+"+"+20085+"="+res);
		}
	}
	/**
	 * 检查charArray内部之间是否有重复
	 * @param     传递charArray字符数组
	 * @return    返回布尔类型,true表示没有重复,false表示有重复
	 */
	public static boolean checkOne(char [] charArray){
		boolean boo = true;
		for (int i = 0; i < charArray.length-1; i++) {
			for (int j = i+1; j < charArray.length; j++) {
				if (charArray[i]==charArray[j]) {
					boo = false;
				}
			}
		}
		return boo;
	}
	/**
	 * 检查charArray和charArray02是否有重复
	 * @param charArray    传递charArray字符数组
	 * @param charArray02      传递charArray02字符数组
	 * @return  返回布尔类型,true表示没有重复,false表示有重复
	 */
	public static boolean checkTwo(char [] charArray,char [] charArray02){
		boolean boo = true;
		for (int i = 0; i < charArray.length; i++) {
			for (int j = 0; j < charArray02.length; j++) {
				if (charArray[i]==charArray02[j]) {
					boo = false;
				}
			}
		}
		return boo;
	}
}

============================================================================================================================

public class mySum {

	public static void main(String[] args) {
		for (int i = 10234; i < 99999-20085; i++) {
			boolean boo = true;
			boo = checkOne(i);
			if (!boo) {
				continue;
			}
			int res = i+20085;
			boo = checkOne(res);
			if (!boo) {
				continue;
			}
			boo = checkTwo(i, res);
			if (!boo) {
				continue;
			}
			System.out.println(i+"+"+20085+"="+res);
		}
	}
	/**
	 * 将一个5位整数拆分成五个0至9之间的数
	 * @param i 穿入的5位整数
	 * @return 返回一个长度为5的整数数组
	 */
	public static int [] getArray(int i){
		int [] getcount = new int [5];
		int mpp = i;
		for (int j = 0; j < getcount.length; j++) {
			getcount[j] = mpp%10;
			mpp = mpp/10;
		}
		return getcount;
	}
	/**
	 * 检查整数i之间的各个位数是否重复
	 * @param i 传入的整数参数
	 * @return 返回布尔类型,true表示不存在重复,false表示存在重复
	 */
	public static boolean checkOne(int i){
		boolean boo = true;
		int [] getcount = getArray(i);
		for (int l = 0; l < getcount.length-1; l++) {
			for (int k = l+1; k < getcount.length; k++) {
				if(getcount[l]==getcount[k]){
					boo = false;
				}
			}
		}
		return boo;
	}
	/**
	 * 检查m和n两个整数之间的各个位数之间是否重复
	 * @param m 传入的整数m
	 * @param n 传入的整数n
	 * @return 返回布尔类型,true表示不存在重复,false表示存在重复
	 */
	public static boolean checkTwo(int m,int n){
		boolean boo = true;
		int [] getcountm = getArray(m);
		int [] getcountn = getArray(n);
		for (int l = 0; l < getcountm.length; l++) {
			for (int k = 0; k < getcountn.length; k++) {
				if(getcountm[l]==getcountn[k]){
					boo = false;
				}
			}
		}
		return boo;
	}
}


posted on 2013-08-02 22:00  不归家的夜  阅读(201)  评论(0编辑  收藏  举报