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



题目描述

血型遗传对照表如下:

父母血型 子女会出现的血型 子女不会出现的血型
O与O O A,B,AB
A与O A,O B,AB
A与A A,O B,AB
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
请实现一个程序,输入父母血型,判断孩子可能的血型。

给定两个字符串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);
  }         
    }
}

你可能感兴趣的:(java,华为)