java基础编程5-血型遗传检测

时间限制:3秒  空间限制:32768K  热度指数:5426
本题知识点:  编程基础
 算法知识视频讲解

题目描述

血型遗传对照表如下:

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

这道题对于我来说,不简单,我不会,但是看别人的看懂了,照着打了一遍。如果用暴力一个一个写我就会,而且此题注意父母的血型可以互换。

import java.util.*;


public class ChkBloodType {
    public String[] chkBlood(String father, String mother) {
        // write code here
        HashMap<String,String> map=new HashMap<String,String>();
        String result="";
        map.put("OO","O");
        map.put("AO","A,O");
        map.put("AA","A,O");
        map.put("AB","A,AB,B,O");
        map.put("AAB","A,AB,B");
        map.put("BO","B,O");
        map.put("BB","B,O");
        map.put("BAB","A,AB,B");
        map.put("ABO","A,B");
        map.put("ABAB","A,AB,B");
        String s1=father+mother;
        String s2=mother+father;
        //Map.Entry<String, String> m : map.entrySet()
        for(Map.Entry<String, String> m : map.entrySet())//相当于遍历了
        {
            String k=(String)(m.getKey());//应该是去map里匹配父母血型
            if(k.equals(s1)||k.equals(s2)){//因为父母血型可以互换
                result=(String)(m.getValue());
                break;
            }
        }
        String[] s=result.split(",");
        return s;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值