题解 | #扑克牌大小#

扑克牌大小

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

import java.util.*;
public class Main {
        public static void main(String[] args){
            Scanner sc= new Scanner(System.in);
            while(sc.hasNext()){
                String s = sc.nextLine();
                String[] arr = s.split("-");
                System.out.println(maxCard(arr[0],arr[1]));
            }
        }
        public static String maxCard(String s1,String s2){
            //先判断有没有王炸
            if(s1.equals("joker JOKER") || s1.equals("JOKER joker")){
                return s1;
            }else if(s2.equals("joker JOKER") || s2.equals("JOKER joker")){
                return s2;
            }
            //如果不是王炸,那么把所有的牌用map存储
            HashMap<String,Integer> map = new HashMap<String,Integer>(){
                {
                    put("A", 14);
                    put("2", 15);
                    put("3", 3);
                    put("4", 4);
                    put("5", 5);
                    put("6", 6);
                    put("7", 7);
                    put("8", 8);
                    put("9", 9);
                    put("10", 10);
                    put("J", 11);
                    put("Q", 12);
                    put("K", 13);
                    put("joker", 16);
                    put("JOKER", 17);
                }
            };
            //分别对两手拍牌单独处理,对应map取出第一张牌来比较
            String[] arr1 = s1.split(" ");
            int n1 = map.get(arr1[0]);
            String[] arr2 = s2.split(" ");
            int n2 = map.get(arr2[0]);
            //再比较是不是炸 即4张牌一样
            /*System.out.println(s1);
            System.out.println(s2);
            System.out.println(isBoom(s1));
            System.out.println(isBoom(s2));*/
            if(isBoom(s1) && isBoom(s2)){
                return n1>n2?s1:s2;
            }else if(isBoom(s1)){
                return s1;
            }else if(isBoom(s2)){
                return s2;
            }else if(arr1.length==arr2.length){
                //如果牌数相等,即是 个数 对子 三张 顺子 因为顺序是固定的 比较第一张牌
                return n1>n2?s1:s2;
            }else{
                //如果牌数不相等 则不存在比较关系
                return "ERROR";
            }
        }
        public static Boolean isBoom(String s1){
            String[] arr3 = s1.split(" ");
            String s= arr3[0];
            //如果牌数没有4张 肯定不是炸
            if(arr3.length!=4){
                return false;
            }
            //如果剩余3张牌和第一张牌不相等,肯定不是炸
            for(int i =1;i<4;i++){
                if(!s.equals(arr3[i])){
                    return false;
                }
            }
            return true;//其他情况都是炸
        }
}
全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务