题解 | #打牌#java,哈希map
打牌
https://www.nowcoder.com/practice/82442ee76977479e8ab4b88dfadfca9f
import java.util.Scanner; import java.util.HashMap; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String hand = sc.next(); String played = sc.next(); String result = canwin(hand, played) ? "YES" : "NO"; System.out.println(result); } sc.close(); } public static boolean canwin(String hand, String played) { int playedlen = played.length(); HashMap<Character, Integer> map = new HashMap<>(); int count; for (char c : hand.toCharArray()) { count = map.getOrDefault(c, 0); map.put(c, count + 1); } if (playedlen == 1) { char target = played.charAt(0); for (char c = (char)(target + 1); c <= '9'; c++) { if (map.getOrDefault(c, 0) > 0) return true; } } else if (playedlen >= 2 && playedlen <= 4) { char target = played.charAt(0); for (char c = (char)(target + 1); c <= '9'; c++) { if ( map.getOrDefault(c, 0) >= playedlen) //map.getOrDefault(c,0) //map.get(c)!=null&&map.get(c)>=playedlen; return true; } } else { String[] patterns = {"12345", "23456", "34567", "45678", "56789"}; for (String pattern : patterns) { boolean match = true; for (int i = 0; i < 5; i++) { if (map.getOrDefault(pattern.charAt(i), 0) == 0) { match = false; break; } } if (match && played.compareTo(pattern) < 0) { return true; } } } return false; } }