题解 | #扑克牌大小#

扑克牌大小

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

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Stack;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    static Map<String, Integer> hashmap = new HashMap<>();

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        for(int i=0 ; i<7 ; ++i){
            hashmap.put((char)('3'+i)+"", i+3);
        }
        hashmap.put("10", 10);//注意该情况
        hashmap.put("J", 11);
        hashmap.put("Q", 12);
        hashmap.put("K", 13);
        hashmap.put("A", 14);
        hashmap.put("2", 15);
        hashmap.put("joker", 16);
        hashmap.put("JOKER", 17);

        while (in.hasNextLine()) {
            String[] s = in.nextLine().split("-");
            String s1 = s[0], s2 = s[1];
            String[] ss1 = s[0].split(" ");
            String[] ss2 = s[1].split(" ");
            //System.out.println(Arrays.toString(ss1));
            int ans = puke(ss1, ss2);
            if(ans == 0){
                System.out.println(s1);
            }
            else if(ans == 1){
                System.out.println(s2);
            }
            else{
                System.out.println("ERROR");
            }
        }
    }

    public static int puke(String[] ss1, String[] ss2) {
        if(ss1.length==2 && ss1[0].equals("joker") && ss1[1].equals("JOKER")){
            return 0;
        }
        if(ss2.length==2 && ss2[0].equals("joker") && ss2[1].equals("JOKER")){
            return 1;
        }
        if(isBoom(ss1) || isBoom((ss2))){
            if(!isBoom(ss2)){
                return 0;
            }
            else if(!isBoom(ss1)){
                return 1;
            }
            else{
                if(hashmap.get(ss1[0]) > hashmap.get(ss2[0])){
                    return 0;
                }
                else{
                    return 1;
                }
            }
        }
        //上面考虑了炸弹和大小王的特殊情况
        if(ss1.length != ss2.length){
            return 2;
        }
        else{
            if(hashmap.get(ss1[0]) > hashmap.get(ss2[0])){
                return 0;
            }
            else{
                return 1;
            }
        }

    }

    public static boolean isBoom(String[] ss) {

        if (ss.length != 4) {
            return false;
        }
        for (int i = 1 ; i < ss.length ; ++i) {
            if (!ss[i].equals(ss[i-1])) {
                return false;
            }
        }
        return true;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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