题解 | #扑克牌大小#

扑克牌大小

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

题目求解思路:

1.判断是否可以进行比较
2.具体判断大小

判断大小的方法:

1.较为繁琐的方法:取手牌一不同的张数情况进行具体对比输出结果;
2.较为便捷的方法:优先判断对王、炸弹的情况,其他情况直接对比第一位数字即可。

import java.util.*;

public class Main {
    public static void main(String[] args)  {
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();
        String handCard1 = input.split("\\-")[0];
        String handCard2 = input.split("\\-")[1];
        String[] cards1 = handCard1.split(" ");
        String[] cards2 = handCard2.split(" ");

        //准备牌大小顺序
        List<String> list = Arrays.asList("3", "4", "5", "6", "7", "8", "9", "10", "J",
                                          "Q", "K", "A", "2", "joker", "JOKER");

        //判断是否存在比价关系
        if (!isComparable(cards1, cards2)) {
            System.out.println("ERROR");
            return ;
        }

        //判断大小
        if(isDoubleKing(cards1)){
            System.out.println(handCard1);
        }else if(isDoubleKing(cards2)){
            System.out.println(handCard2);
        }else if(isBoom(cards1) && isBoom(cards2)){
            System.out.println(list.indexOf(cards1[0]) > list.indexOf(
                                       cards2[0]) ? handCard1 : handCard2);
        }else if(isBoom(cards1)){
            System.out.println(handCard1);
        }else if(isBoom(cards2)){
            System.out.println(handCard2);
        }else {
            System.out.println(list.indexOf(cards1[0]) > list.indexOf(
                                       cards2[0]) ? handCard1 : handCard2);
        }
//         if (cards1.length == 1) {//若手牌一仅1张牌
//             if (cards2.length == 1) {
//                 System.out.println(list.indexOf(cards1[0]) > list.indexOf(
//                                        cards2[0]) ? handCard1 : handCard2);
//             } else {
//                 System.out.println(handCard2);
//             }
//         } else if (cards1.length == 2) { //若手牌一有2张牌
//             if (isDoubleKing(cards2) ) {
//                 System.out.println(handCard2);
//             } else if (isDoubleKing(cards1)) {
//                 System.out.println(handCard1);
//             } else if(isBoom(cards2)){
//                 System.out.println(handCard2);
//             } else {
//                 System.out.println(list.indexOf(cards1[0]) > list.indexOf(
//                                        cards2[0]) ? handCard1 : handCard2);
//             }
//         }else if(cards1.length==3){//若手牌一有3张牌
//             if(cards2.length==3){
//                 System.out.println(list.indexOf(cards1[0]) > list.indexOf(
//                                        cards2[0]) ? handCard1 : handCard2);
//             }else{
//                 System.out.println(handCard2);
//             }
//         }else if(cards1.length==4){//若手牌一有4张牌
//             if(isBoom(cards2)){
//                 System.out.println(list.indexOf(cards1[0]) > list.indexOf(
//                                        cards2[0]) ? handCard1 : handCard2);
//             }else if(isDoubleKing(cards2)){
//                 System.out.println(handCard2);
//             }else{
//                 System.out.println(handCard1);
//             }

//         }else if(cards1.length==5){//若手牌一有5张牌
//             if(isBoom(cards2)||isDoubleKing(cards2)){
//                 System.out.println(handCard2);
//             }else{
//                 System.out.println(list.indexOf(cards1[0]) > list.indexOf(
//                                        cards2[0]) ? handCard1 : handCard2);
//             }
//         }


    }


    public static boolean isComparable(String[] cards1, String[] cards2) {
        //牌的个数相同,可比较
        if (cards1.length == cards2.length) return true;
        //存在炸弹和对王,可比较
        if (isDoubleKing(cards1) || isDoubleKing(cards2) || isBoom(cards1) ||
                isBoom(cards2)) return true;
        return false;
    }

    //是否为对王
    public static boolean isDoubleKing(String[] cards) {
        if (cards.length == 2 &&
                ((cards[0].equals("joker") && cards[1].equals("JOKER")) ||
                 (cards[1].equals("joker") && cards[0].equals("JOKER")))) return true;
        return false;
    }

    //是否为炸弹
    public static boolean isBoom(String[] cards) {
        if (cards.length == 4 &&
                (cards[0].equals(cards[1]) && cards[1].equals(cards[2]) &&
                 cards[2].equals(cards[3]))) return true;
        return false;
    }

}
全部评论

相关推荐

04-08 13:31
已编辑
门头沟学院 前端工程师
D0cC:京东营收1万多亿人民币,阿里9000多亿,虽然他俩利润都没腾讯和字节多,但是很恐怖了啊,负担了多少打工人的薪水
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务