题解 | #扑克牌大小#

扑克牌大小

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

import java.util.Scanner;

public class Main {
     public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.nextLine();
        String[] split = input.split("-");
        String s1 = split[0];//前一手牌
        String s2 = split[1];//后一手牌

        //判断牌面类型
        int i1 = check(s1);
        int i2 = check(s2);
        //类型比较,看是否可以比大小
        if (i1 == 6) {
            System.out.println(s1);
        } else if (i2 == 6) {
            System.out.println(s2);
        } else if (i1 == 4) {
            System.out.println(i2 == 4 ? getResult(i1, s1, s2) : s1);//炸弹比较
        } else if (i2 == 4) {
            System.out.println(s2);
        } else if (i1 == i2) {
            System.out.println(getResult(i1, s1, s2));//个子 对子 三个 同花顺 比较
        } else {
            System.out.println("ERROR");
        }

    }

    private static String getResult(int type, String s1, String s2) {
        String[] split1 = s1.split(" ");
        String[] split2 = s2.split(" ");
        int r = change(split1[0]) - change(split2[0]);
        return r < 0 ? s2 : s1;
    }

    private static int change(String s) {
        switch (s) {
            case "3":
                return 3;
            case "4":
                return 4;
            case "5":
                return 5;
            case "6":
                return 6;
            case "7":
                return 7;
            case "8":
                return 8;
            case "9":
                return 9;
            case "10":
                return 10;
            case "J":
                return 11;
            case "Q":
                return 12;
            case "K":
                return 13;
            case "A":
                return 14;
            case "2":
                return 15;
            case "joker":
                return 16;
            case "JOKER":
                return 17;
            default:
                return -1;
        }
    }

    private static int check(String s) {
        String[] ss = s.split(" ");
        int length = ss.length;
        if (length == 2) {
            //对子
            if (ss[0].equals(ss[1])) {
                return 2;
            } else {
                //对王
                return 6;
            }
        } else {
            return length;
        }
    }
}

解题思路:

1, 首先分析牌面类型;

2, 根据牌面类型判断是否可以比较;

3, 可以比较的情况下, 进行牌面的比较, 得出结论

全部评论

相关推荐

七牛云头号黑子:人家是过度包装被看出来没过简历,你是包都不包啊兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务