java 判断扑克牌顺序 大佬们帮忙看看代码有没有问题



 //    题目描述:给定一组扑克牌,判断其中是否存在五张扑克牌组成同花顺的牌型。
//每张扑克牌由花色和点值组成。花色包括:黑桃(S)、红桃(H)、梅花(C)、方片(D);
// 点值从小到大包括:2、3、4、5、6、7、8、9、10、J、Q、K、A。
//    每张扑克牌通过花色和点值拼接成的一个字符串表示,例如红桃10为H10,方片A表示成DA。
    // 同花顺
    // 特殊情况  J Q K 代表 11 12 13
    // 还有 A 1 2 3 4 5
    // 大于五个数怎么办 有重复

public class Solution {
    public boolean isValid(String[] input) {
        Map<Character, List<Integer>> m=new HashMap<>();
        // 数据预处理
        for (int i = 0; i <input.length; i++) {
            Character c=input[i].charAt(0);
            m.putIfAbsent(c,new ArrayList<Integer>());
            m.get(c).add(check(input[i].substring(1)));
        }
        for (Character character : m.keySet()) {
            Collections.sort(m.get(character));
        }
        for (List<Integer> value : m.values()) {
            int count=1;
            if(value.size()<5) continue;
            for (int i = 0; i < value.size()-1; i++) {
                if(value.get(i)==value.get(i+1)){
                    continue;
                }
                if(value.get(i)+1==value.get(i+1)){
                    count++;
                }
                if(count>4){
                    return true;
                }
            }
        }
        return false;
    }


    public int check(String input){
        switch (input){
            case "A":
                return 1;
            case "K":
                return 13;
            case "Q":
                return 12;
            case "J":
                return 11;
        }
        return Integer.valueOf(input);
    }

}


全部评论
这个有意思啊
点赞 回复 分享
发布于 2022-08-14 12:40

相关推荐

完美的潜伏者许愿简历...:隐藏信息被你提取出来了,暗示,这就是暗示
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
06-07 19:59
门头沟学院 C++
补药卡我啊😭:都快15年前的了还在11新特性
你的简历改到第几版了
点赞 评论 收藏
分享
码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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