题解 | #扑克牌大小#
扑克牌大小
https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static HashMap<String, Integer> map = new HashMap<>(); public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String a = in.nextLine(); 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); map.put("A", 14); map.put("2", 15); map.put("joker", 16); map.put("JOKER", 17); String[] ss = a.trim().split("-"); String out = getResult(ss[0], ss[1], map); System.out.println(out); } } public static String getResult(String s1, String s2, HashMap<String, Integer> map) { //类型是否正确 String resultstr = ""; String[] n1 = s1.trim().split(" "); String[] n2 = s2.trim().split(" "); int m1 = n1.length; int m2 = n2.length; if (m1 == 1) { if (m2 == 1) { resultstr = map.get(s1) > map.get(s2) ? s1 : s2; } else if (m2 == 2) { if (isJoker(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else if (m2 == 4) { if (isZd(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } } else if (m1 == 2) { if (isJoker(n1)) { resultstr = s1; } else if (isPair(n1)) { if (m2 == 1) { resultstr = "ERROR"; } else if (m2 == 2) { if (isJoker(n2)) { resultstr = s2; } else if (isPair(n2)) { resultstr = map.get(n1[0]) > map.get(n2[0]) ? s1 : s2; } else { resultstr = "ERROR"; } } else if (m2 == 4) { if (isZd(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } } else if (m1 == 3) { if (isThreePair(n1)) { if (m2 == 1) { resultstr = "ERROR"; } else if (m2 == 2) { if (isJoker(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else if (m2 == 4) { if (isZd(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else if (m2 == 3) { if (isThreePair(n2)) { resultstr = map.get(n1[0]) > map.get(n2[0]) ? s1 : s2; } else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } } else if (m1 == 4) { if (isZd(n1)) { if (m2 == 2) { if (isJoker(n2)) { resultstr = s2; } else if(isPair(n2)){ resultstr = s1; } else { resultstr = "ERROR"; } } else if (m2 == 4) { if (isZd(n2)) { resultstr = map.get(n1[0]) > map.get(n2[0]) ? s1 : s2; } else { resultstr = "ERROR"; } } else { resultstr = s1; } } else { resultstr = "ERROR"; } } else if (m1 >= 5 && m1 <= 13) { if (isShun(n1)) { if (m2 == 1) { resultstr = "ERROR"; } else if (m2 == 2) { if (isJoker(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else if (m2 == 4) { if (isZd(n2)) { resultstr = s2; } else { resultstr = "ERROR"; } } else if(m1==m2){ if (isShun(n1)){ //比较顺子 List<String> list1 = Arrays.asList(n1); Collections.sort(list1); String ggg = list1.get(0); List<String> list2 = Arrays.asList(n2); Collections.sort(list2); String ggg2 = list2.get(0); resultstr=map.get(ggg)>=map.get(ggg2)?s1:s2; }else{ resultstr = "ERROR"; } }else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } } else { resultstr = "ERROR"; } return resultstr; } public static Boolean isJoker(String[] str) { if ((str[0].equals("joker") && str[1].equals("JOKER")) || (str[1].equals("joker") && str[0].equals("JOKER"))) { return true; } else { return false; } } public static Boolean isPair(String[] str) { if (str[0].equals(str[1])) { return true; } else { return false; } } public static Boolean isThreePair(String[] str) { if (str[0].equals(str[1]) && str[1].equals(str[2])) { return true; } else { return false; } } public static Boolean isZd(String[] str) { if ((str[0].equals(str[1])) && (str[1].equals(str[2])) && (str[2].equals(str[3]))) { return true; } else { return false; } } public static Boolean isShun(String[] str) { List<String> list = Arrays.asList(str); Collections.sort(list); String ggg = list.get(0); if ((map.get(ggg) >= 3 && map.get(ggg) <= 10)) { for (int i = 1; i < list.size(); i++) { String hhh = list.get(i); String yyy = list.get(i - 1); if (map.get(hhh) - map.get(yyy) != 1) { return false; } } return true; } else { return false; } } }