首页 » 技术分享 » 血型遗传

血型遗传

 

题目

血型遗传对照表如下:

父母血型 子女会出现的血型 子女不会出现的血型
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];
    }
}

转载自原文链接, 如需删除请联系管理员。

原文链接:血型遗传,转载请注明来源!

0