华为机试---血型遗传检测

来源:互联网 发布:天津河东淘宝街搬哪了 编辑:程序博客网 时间:2024/04/30 09:31


题目描述

血型遗传对照表如下:

父母血型子女会出现的血型子女不会出现的血型O与OOA,B,ABA与OA,OB,ABA与AA,OB,ABA与BA,B,AB,O——A与ABA,B,ABOB与OB,OA,ABB与BB,OA,ABB与ABA,B,ABOAB与OA,BO,ABAB与ABA,B,ABO请实现一个程序,输入父母血型,判断孩子可能的血型。

给定两个字符串fathermother,代表父母的血型,请返回一个字符串数组,代表孩子的可能血型(按照字典序排列)。

测试样例:
”A”,”A”
返回:[”A”,“O”]
题目分析:
1.题目特定,可以用map存储
2.父母的血型可以交换
3.输出孩子可能血型必须按照字典顺序
import java.util.HashMap;import java.util.Map;
public class ChkBloodType {    public String[] chkBlood(String father, String mother) {   Map<String , String[]> map = new HashMap<String , String[]>();  map.put("OO", new String[] {"O"});  map.put("AO", new String[] {"A" , "O"});  map.put("AA", new String[] {"A" , "O"});  map.put("AB", new String[] {"A" , "AB" , "B" , "O"});  map.put("AAB", new String[] {"A" , "AB" , "B"});  map.put("BO", new String[] {"B" , "O"});  map.put("BB", new String[] {"B" , "O"});  map.put("BAB", new String[] {"A" , "AB" , "B"});  map.put("ABO", new String[] {"A" , "B"});  map.put("ABAB", new String[] {"A" , "AB" , "B"});  if(map.get(father + mother) == null){   return map.get(mother + father);  }else{   return map.get(father + mother);  }             }}
1 0