题解 | #扑克牌大小#

扑克牌大小

https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static HashMap<String, Integer> map = new HashMap<>();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            map.put("3", 3);
            map.put("4", 4);
            map.put("5", 5);
            map.put("6", 6);
            map.put("7", 7);
            map.put("8", 8);
            map.put("9", 9);
            map.put("10", 10);
            map.put("J", 11);
            map.put("Q", 12);
            map.put("K", 13);
            map.put("A", 14);
            map.put("2", 15);
            map.put("joker", 16);
            map.put("JOKER", 17);
            String[] ss = a.trim().split("-");
            String out = getResult(ss[0], ss[1], map);
            System.out.println(out);
        }
    }

    public static String getResult(String s1, String s2,
                                   HashMap<String, Integer> map) {
        //类型是否正确
        String resultstr = "";
        String[] n1 = s1.trim().split(" ");
        String[] n2 = s2.trim().split(" ");
        int m1 = n1.length;
        int m2 = n2.length;

        if (m1 == 1) {
            if (m2 == 1) {
                resultstr = map.get(s1) > map.get(s2) ? s1 : s2;
            } else if (m2 == 2) {
                if (isJoker(n2)) {
                    resultstr = s2;
                } else {
                    resultstr = "ERROR";
                }
            } else if (m2 == 4) {
                if (isZd(n2)) {
                    resultstr = s2;
                } else {
                    resultstr = "ERROR";
                }
            } else {
                resultstr = "ERROR";
            }
        } else if (m1 == 2) {
            if (isJoker(n1)) {
                resultstr = s1;
            } else if (isPair(n1)) {
                if (m2 == 1) {
                    resultstr = "ERROR";
                } else if (m2 == 2) {
                    if (isJoker(n2)) {
                        resultstr = s2;
                    } else if (isPair(n2)) {
                        resultstr = map.get(n1[0]) > map.get(n2[0]) ? s1 : s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else if (m2 == 4) {
                    if (isZd(n2)) {
                        resultstr = s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else {
                    resultstr = "ERROR";
                }
            } else {
                resultstr = "ERROR";
            }
        } else if (m1 == 3) {
            if (isThreePair(n1)) {
                if (m2 == 1) {
                    resultstr = "ERROR";
                } else if (m2 == 2) {
                    if (isJoker(n2)) {
                        resultstr = s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else if (m2 == 4) {
                    if (isZd(n2)) {
                        resultstr = s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else if (m2 == 3) {
                    if (isThreePair(n2)) {
                        resultstr = map.get(n1[0]) > map.get(n2[0]) ? s1 : s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else {
                    resultstr = "ERROR";
                }
            } else {
                resultstr = "ERROR";
            }

        } else if (m1 == 4) {
            if (isZd(n1)) {
                if (m2 == 2) {
                    if (isJoker(n2)) {
                        resultstr = s2;
                    } else if(isPair(n2)){
                        resultstr = s1;
                    }
                    else {
                        resultstr = "ERROR";
                    }
                } else if (m2 == 4) {
                    if (isZd(n2)) {
                        resultstr = map.get(n1[0]) > map.get(n2[0]) ? s1 : s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else {
                    resultstr = s1;
                }
            } else {
                resultstr = "ERROR";
            }
        } else if (m1 >= 5 && m1 <= 13) {
            if (isShun(n1)) {
                if (m2 == 1) {
                    resultstr = "ERROR";
                } else if (m2 == 2) {
                    if (isJoker(n2)) {
                        resultstr = s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else if (m2 == 4) {
                    if (isZd(n2)) {
                        resultstr = s2;
                    } else {
                        resultstr = "ERROR";
                    }
                } else if(m1==m2){
                    if (isShun(n1)){
                        //比较顺子
                        List<String> list1 = Arrays.asList(n1);
                        Collections.sort(list1);
                        String ggg = list1.get(0);
                        List<String> list2 = Arrays.asList(n2);
                        Collections.sort(list2);
                        String ggg2 = list2.get(0);
                        resultstr=map.get(ggg)>=map.get(ggg2)?s1:s2;

                    }else{
                       resultstr = "ERROR"; 
                    }
                }else {
                    resultstr = "ERROR";
                }
            } else {
                resultstr = "ERROR";
            }

        } else {
            resultstr = "ERROR";
        }
        return resultstr;
    }

    public static Boolean isJoker(String[] str) {
        if ((str[0].equals("joker") && str[1].equals("JOKER")) ||
                (str[1].equals("joker") && str[0].equals("JOKER"))) {
            return true;
        } else {
            return false;
        }
    }

    public static Boolean isPair(String[] str) {
        if (str[0].equals(str[1])) {
            return true;
        } else {
            return false;
        }
    }

    public static Boolean isThreePair(String[] str) {
        if (str[0].equals(str[1]) && str[1].equals(str[2])) {
            return true;
        } else {
            return false;
        }
    }

    public static Boolean isZd(String[] str) {
        if ((str[0].equals(str[1])) && (str[1].equals(str[2])) &&
                (str[2].equals(str[3]))) {
            return true;
        } else {
            return false;
        }
    }

    public static Boolean isShun(String[] str) {
        List<String> list = Arrays.asList(str);
        Collections.sort(list);
        String ggg = list.get(0);
        if ((map.get(ggg) >= 3 && map.get(ggg) <= 10)) {
            for (int i = 1; i < list.size(); i++) {
                String hhh = list.get(i);
                String yyy = list.get(i - 1);
                if (map.get(hhh) - map.get(yyy) != 1) {
                    return false;
                }
            }
            return true;
        } else {
            return false;
        }
    }
}

全部评论

相关推荐

葬爱~冷少:我当时都是上午刷力扣,下午背八股,有活给我先别急,没活就干自己的事情
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务