题目描述:分析:
java代码实现:
private static String FindnumAppearOnce(int []numbers) {
String result = null;
int resultofOR = 0;
int num1 = 0;
int num2 = 0;
if(numbers.length < 1 || numbers == null) {
result = "无效的输入。";
} else {
for(int i=0;i<numbers.length;i++)
resultofOR ^= numbers[i];
int index = findFirstBitIsOne(resultofOR);
for(int i=0;i<numbers.length;i++) {
if(isBitOne(numbers[i],index)) {
num1 ^= numbers[i];
} else {
num2 ^= numbers[i];
}
}
result = "出现一次的两个数字为:" + num1 + "," + num2 ;
}
return result;
}
private static int findFirstBitIsOne(int num) {
int index = 0;
while((num&1)==0 && (index <8)) {
num = num >> 1;
index ++ ;
}
return index ;
}
private static boolean isBitOne(int num,int index) {
num = num >> index;
if((num&1) == 1)
return true;
else
return false;
}
测试:
public static void main(String[] args) {
int []numbers = {2,4,3,6,3,2,5,5};
System.out.println(FindnumAppearOnce(numbers));
}
输出:出现一次的两个数字为:6,4