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); } }