题解 | #打牌#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;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务