题目
血型遗传对照表如下:
父母血型 | 子女会出现的血型 | 子女不会出现的血型 |
---|---|---|
O与O | O | A,B,AB |
A与O | A,O | B,AB |
A与A | A,O | |
A与B | A,B,AB,O | —— |
A与AB | A,B,AB | O |
B与O | B,O | A,AB |
B与B | B,O | A,AB |
B与AB | A,B,AB | O |
AB与O | A,B | O,AB |
AB与AB | A,B,AB | O |
请实现一个程序,输入父母血型,判断孩子可能的血型。
给定两个字符串father和mother,代表父母的血型,请返回一个字符串数组,代表孩子的可能血型(按照字典序排列)。
测试样例:
”A”,”A”
返回:[”A”,“O”]
解法
感觉这题比较基础,好像就是单纯考察else if,不过个人感觉可以用hash表的方法来做会不会更好?(不过暂时不会写,以后又有机会再修改~)
具体代码实现如下:
import java.util.*;
public class ChkBloodType {
public String[] chkBlood(String father, String mother) {
// write code here
String[] map ={"OO","AO","OA","AA","BO","OB","BB","AAB","ABA","BAB","ABB","ABAB","OAB","ABO","AB","BA"};
String[][] chkBlood = {{"O"},{"A","O"},{"B","O"},{"A","AB","B"},{"A","AB","B","O"},{"A","B"}};
int k = 0;
for(int i = 0;i < map.length;i++){
if(map[i].equals(father + mother)){
k = i;
break;
}
}
if(k == 0)
return chkBlood[0];
else if(k == 1||k == 2||k == 3)
return chkBlood[1];
else if(k == 4||k == 5||k ==6)
return chkBlood[2];
else if(k == 7||k == 8||k == 9||k == 10||k == 11)
return chkBlood[3];
else if(k == 12||k == 13)
return chkBlood[5];
else
return chkBlood[4];
}
}
转载自原文链接, 如需删除请联系管理员。
原文链接:血型遗传,转载请注明来源!