题解 | #扑克牌大小#斗地主,先出大的,再出小的,详见正文

扑克牌大小

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

1、hashmap记录牌型大小 2、两个都不是炸弹,王炸, 长度不一致则不可比较输出ERROR 长度一致,比较大小 3、如果有王炸,直接输出 4、如果其中之一是炸弹,输出炸弹 5、如果两个都是炸弹,比较大小

import java.util.*;

public class Main {
    public static HashMap<String,Integer> cmp = new HashMap<String,Integer>(){{
            put("3",1);
            put("4",2);
            put("5",3);
            put("6",4);
            put("7",5);
            put("8",6);
            put("9",7);
            put("10",8);
            put("J",9);
            put("Q",10);
            put("K",11);
            put("A",12);
            put("2",13);
            put("joker",14);
            put("JOKER",15);
    }};
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String[] pk = in.nextLine().split("\\-");
            String[] p1 = pk[0].split("\\s");
            String[] p2 = pk[1].split("\\s");
            //不是炸弹,王炸,长度不一致则不可比较输出ERROR
            if(!jokerBoom(p1) && !jokerBoom(p2) && !isBoom(p1) && !isBoom(p2)){
                if(p1.length != p2.length){
                    System.out.println("ERROR");
                    continue;
                }else{//p1 和 p2都不是炸弹,长度一致
                    printResult(cmpP1P2(p1,p2));
                    continue;
                }
            }
            if(jokerBoom(p1)){
                printResult(p1);
                continue;
            }
            if(jokerBoom(p2)){
                printResult(p2);
                continue;
            }
            if(isBoom(p1) && !isBoom(p2)){
                printResult(p1);
                continue;
            }
            if(!isBoom(p1) && isBoom(p2)){
                printResult(p2);
                continue;
            }
            if(isBoom(p1) && isBoom(p2)){
                printResult(cmpP1P2(p1,p2));//比大小
            }
        }
    }
    public static boolean jokerBoom(String[] s){
        if(s.length != 2){
            return false;
        }
        return (s[0].equals("joker") && s[1].equals("JOKER")) || (s[1].equals("joker") && s[0].equals("JOKER"));
    }
    public static boolean isBoom(String[] s){
        if(s.length == 4){
            return true;
        }
        return false;
    }
    //牌型相同且不是炸弹
    public static String[] cmpP1P2(String[] p1,String[] p2){
        if(cmp.get(p1[0]) > cmp.get(p2[0])){
            return p1;
        }else{
            return p2;
        }
    }
    //打印结果
    public static void printResult(String[] s){
        for(int i=0;i<s.length-1;i++){
            System.out.print(s[i] + " ");
        }
        System.out.println(s[s.length-1]);//打印最后一个数字,并换行
    }
}
全部评论

相关推荐

中信银行 AI算法岗 29~32w
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务