Loading

299. [字符串][哈希表][缓存]猜数字游戏

299. 猜数字游戏

在一次遍历中进行逐位比较,可以完成的事情有两件:① 两者相同,A++ ② 用一个整型数组作为缓存,当两者不同时,将秘密数字和猜测数字分别缓存,秘密数字的计数位如果为负,说明之前缓存过猜测数字,反之,之前缓存过秘密数字,B++。

// 执行用时: 8 ms , 在所有 Java 提交中击败了 41.03% 的用户 
// 内存消耗: 38.7 MB , 在所有 Java 提交中击败了 83.46% 的用户
class Solution {
    public String getHint(String secret, String guess) {
        int[] cache = new int[10];
        int a = 0, b = 0, len = secret.length();

        for(int i = 0; i < len; i++){
            char sec = secret.charAt(i);
            char gue = guess.charAt(i);
            if(sec == gue){
                a++;
            } else {
                if(cache[sec - '0']++ < 0)  b++;
                if(cache[gue - '0']-- > 0)  b++;
            }
        }

        return Integer.toString(a) + "A" + Integer.toString(b) + "B";
    }
}
posted @ 2020-10-24 11:29  上海井盖王  阅读(96)  评论(0)    收藏  举报