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