Skip to content

Latest commit

 

History

History
72 lines (62 loc) · 1.9 KB

Question_299.md

File metadata and controls

72 lines (62 loc) · 1.9 KB

LeetCode Records - Question 299 Bulls and Cows

Attempt 1: Use String.format()

class Solution {
    public String getHint(String secret, String guess) {
        char[] arr1 = secret.toCharArray();
        char[] arr2 = guess.toCharArray();
        int[] counts1 = new int[10];
        int[] counts2 = new int[10];
        int numOfBulls = 0;
        
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] == arr2[i]) {
                numOfBulls++;
            } else {
                counts1[arr1[i] - '0']++;
                counts2[arr2[i] - '0']++;
            }
        }

        int numOfCows = 0;
        for (int i = 0; i < 10; i++) {
            numOfCows += Math.min(counts1[i], counts2[i]);
        }

        return String.format("%dA%dB", numOfBulls, numOfCows);
    }
}
  • Runtime: 4 ms (Beats: 90.98%)
  • Memory: 42.48 MB (Beats: 31.25%)

Attempt 2: Use StringBuilder

class Solution {
    public String getHint(String secret, String guess) {
        char[] arr1 = secret.toCharArray();
        char[] arr2 = guess.toCharArray();
        int[] counts1 = new int[10];
        int[] counts2 = new int[10];
        int numOfBulls = 0;
        
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] == arr2[i]) {
                numOfBulls++;
            } else {
                counts1[arr1[i] - '0']++;
                counts2[arr2[i] - '0']++;
            }
        }

        int numOfCows = 0;
        for (int i = 0; i < 10; i++) {
            numOfCows += Math.min(counts1[i], counts2[i]);
        }

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(numOfBulls);
        stringBuilder.append('A');
        stringBuilder.append(numOfCows);
        stringBuilder.append('B');
        return stringBuilder.toString();
    }
}
  • Runtime: 1 ms (Beats: 100.00%)
  • Memory: 42.47 MB (Beats: 31.25%)