扑克牌の顺子Judge(Java语言描述)

题目要求

(这题自己编着玩的)

现有一副扑克牌,不分花色,分别是 A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, King

在这里插入图片描述
在这里插入图片描述

要求编写一个判断抽到的n张牌是不是顺子的程序(王不算顺子里的Part)。

分析

由于 A < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K,我们要用Character肯定不好直接处理,因为A与2、10与J不连续,10也不是char,更何况还有King。

所以我就建立一个映射关系的HashMap,用于查找。
将A定义为1,J定义为11,Q定义为12,K定义为13。

顺子必须是5张牌以上,所以先输入的num不足5就Pass。

接下来把获取的卡放进Set里,如果Map里没有,就不能凑成顺子。还要判重,如果重复就不是顺子。

最后做一下数据统计,因为用了TreeSet就完成了排序嘛,所以保证每一个输出的数值都是前一个的值+1,就完事。

思路不一定是最简,只是我的一个想法,有更好的方法还请多多指教,感谢。

实现代码(Java语言描述)

import java.util.*;

public class CardsTest {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>(13);
        map.put("A", 1);
        map.put("2", 2);
        map.put("3", 3);
        map.put("4", 4);
        map.put("5", 5);
        map.put("6", 6);
        map.put("7", 7);
        map.put("8", 8);
        map.put("9", 9);
        map.put("10", 10);
        map.put("J", 11);
        map.put("Q", 12);
        map.put("K", 13);
        Set<Integer> set = new TreeSet<>();
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        if (num < 5) {
            System.out.println("NO");
            return;
        }
        for (int i = 0; i < num; i++) {
            String input = scanner.next();
            if (!map.containsKey(input)) {
                System.out.println("NO");
                return;
            }
            int card = map.get(input);
            if (set.contains(card)) {
                System.out.println("NO");
                return;
            }
            set.add(card);
        }
        scanner.close();
        int prev = 0, counter = 0;
        for (int i : set) {
            if (counter == 0) {
                prev = i;
                counter++;
            } else {
                if (prev == i-1) {
                    prev = i;
                } else {
                    System.out.println("NO");
                    return;
                }
            }
        }
        System.out.println("YES");
    }
}
发布了484 篇原创文章 · 获赞 976 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104256602