力扣简2347 最好的扑克手牌 每日一题

暴力求解 但是忽略了三条中的2=3=4的情况

后面写着写着 想了想可以构建一个数组 又觉得占内存 还是暴力解了

    public static String bestHand(int[] ranks, char[] suits) {
        if(suits[0]==suits[1]&&suits[2]==suits[3]&&suits[4]==suits[0]&&suits[0]==suits[2]) {
            return ("Flush");
        }
        Arrays.sort(ranks);
        
        if((ranks[0]==ranks[1]&&ranks[1]==ranks[2])||(ranks[2]==ranks[3]&&ranks[3]==ranks[4])||(ranks[3]==ranks[1]&&ranks[1]==ranks[2])) {
            return("Three of a Kind");//最开始这里的12345中2=3=4情况被忽略了
        }
        if(ranks[0]==ranks[1]||ranks[2]==ranks[1]||ranks[2]==ranks[3]||ranks[3]==ranks[4]) {
            return("Pair");
        }
        return("High Card");
    }

 

构建一个计数的数组 更慢了哈哈哈

public String bestHand(int[] ranks, char[] suits) {
        int[] count= {1,1,1,1,1};
        if(suits[0]==suits[1]&&suits[2]==suits[3]&&suits[4]==suits[0]&&suits[0]==suits[2]) {
            return ("Flush");
        }
        Arrays.sort(ranks);
        for(int i=1;i<5;i++) {
            if(ranks[i]==ranks[i-1]) {
                count[i]=count[i-1]+1;
            }
        }
        Arrays.sort(count);
        if(count[4]>=3) {
            return("Three of a Kind");//最开始这里的12345中2=3=4情况被忽略了
        }
        if(count[4]==2) {
            return("Pair");
        }
        return("High Card");
    }

 

 

看题解答案 用哈希表{其实是集合吧} 然后想应该用字典更合适 结果人家其实就是用的字典 熟悉一下

public static String bestHand(int[] ranks, char[] suits) {
        Set<Character> set =new HashSet<Character>();
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(char suit:suits) {
            set.add(suit);
        }
        if(set.size()==1) {
            return("Flush");
        }
        for(int rank:ranks) {
            map.put(rank, map.getOrDefault(rank, 0)+1);
        }
        if(map.size()==5) {
            return("High Card");
        }
//        else if(map.size()==3) {//刚开始还考虑光用尺寸判断 然后发现当size=3可能是3 1 1或者2 2 1 无法判断    
//        }
//        for(Map.Entry<Integer,Integer>entry:map.entrySet()) {//只看value就可以把 所以也没必要key-value全取
//            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());  
//        }
        for(int i:map.values()) {
            if(i>=3) {
                return("Three of a Kind");
            }
        }
        return "Pair";
    }

 

posted @ 2023-02-21 10:34  Ssshiny  阅读(16)  评论(0)    收藏  举报