アルゴリズムはhttps://discuss.leetcode.com/topic/28463/one-pass-java-solutionです。leetcodeの雄牛と牛の説明
public static String getHint(String secret, String guess) {
int bulls = 0;
int cows = 0;
int[] numbers = new int[10];
for (int i = 0; i<secret.length(); i++) {
int s = Character.getNumericValue(secret.charAt(i));
int g = Character.getNumericValue(guess.charAt(i));
if (s == g) bulls++;
else {
if (numbers[s] < 0){
cows++;
}
if (numbers[g] > 0){
cows++;
}
numbers[s] ++;
numbers[g] --;
}
}
return bulls + "A" + cows + "B";
}
しかし、どのようにこの部分を理解するために:
numbers[s] ++;
numbers[g] --;
なぜそれが秘密でカウントするように推測し、正の数の発生をカウントするために負の数を使用しません。
[++ i、i ++のプリプロイド/ポストインクリメントのJavaでの配列使用可能な複製](http://stackoverflow.com/questions/39809772/ii-pre-post-incrementation-usage-with-arrays-in) -java) –
++ i/i ++演算子を理解するのに問題はありません。ポイントはここでなぜ「秘密」を増やし、「推測」を減らすかです。 – user697911
アルゴリズムの一部について混乱がある場合は、「この部分を理解する方法」が重複して回答された質問のように思われるので、明示的に記述する方が良いでしょう –