Bull And Cows

package cn.edu.xidian.sselab.hashtable;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 *
 * @author zhiyong wang
 * title: Bull And Cows
 * content:
 *
ou are playing the following Bulls and Cows game with your friend: You
write down a number and ask your friend to guess what the number is.
Each time your friend makes a guess, you provide a hint that indicates
how many digits in said guess match your secret number exactly in both
digit and position (called "bulls") and how many digits match the secret
number but locate in the wrong position (called "cows"). Your friend
will use successive guesses and hints to eventually derive the secret
number.
 * For example:
 *
 * Secret number:  "1807"
 * Friend‘s guess: "7810"
 *
 * Hint: 1 bull and 3 cows. (The bull is 8, the cows are 0, 1 and 7.)
 *
 *
Write a function to return a hint according to the secret number and
friend‘s guess, use A to indicate the bulls and B to indicate the cows.
In the above example, your function should return "1A3B".
 *
 * Please note that both secret number and friend‘s guess may contain duplicate digits, for example:
 *
 * Secret number:  "1123"
 * Friend‘s guess: "0111"
 *
 * In this case, the 1st 1 in friend‘s guess is a bull, the 2nd or 3rd 1 is a cow, and your function should return "1A1B".
 *
 * You may assume that the secret number and your friend‘s guess only contain digits, and their lengths are always equal.
 *
 */
public class BullAndCows {

//自己没有想出来,参考大牛的解题思路
    //这里默认secret 与 guess的长度是相等的
    //这个地方求cow的值是通过新建一个数组来保存0到9这十个数字,初始化值都为0,如果在secret中,他对应的值加1,如果在guess中,他对应的值减1
    //这样如果在secret的某位的值在数组中显示小于0,说明他以前在guess中出现过,通过guess也是这样
    public String getHint(String secret, String guess){
        int[] numbers = new int[10];
        int bull = 0;
        int cow = 0;
        if(secret == null || guess == null) return null;
        if(secret.length() == 0 || guess.length() == 0)
            return "0A0B";
        for(int i=0;i<secret.length();i++){
            if(secret.charAt(i) == guess.charAt(i))
                bull++;
            else{
                if(numbers[secret.charAt(i) - ‘0‘]++ < 0) cow++;
                if(numbers[guess.charAt(i) - ‘0‘]-- > 0) cow++;
            }
        }
        return bull + "A" + cow + "B";
    }
    
}

?

时间: 2024-12-29 23:25:53

Bull And Cows的相关文章

Cipe Coding Summary Part2

25. Matrix PositionGiven an NxN matrix with unique integers :Find and print positions of all numbers such that it is the biggest in its row and also the smallest in its column . e.g. : In 3 x 3 with elements 1 2 3 .4 5 6 7 8 9 . the number is 3 and p

Lettcode_299_Bulls and Cows

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/50768550 You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a g

[LeetCode] Bulls and Cows

Bulls and Cows You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret number and ask your friend to guess it, each time your friend guesses a number, you give a hint, the hint tells your friend how many digits

Leetcode_299_Bulls and Cows

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/50768550 You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a g

Java [Leetcode 229]Bulls and Cows

题目描述: You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a hint that indicates how many digits in said guess ma

LC - Bulls and Cows

https://leetcode.com/problems/bulls-and-cows/ Examples: Secret: 1807     Secret: 1123 Guess: 7810    ====> "0A3B" Guess:  0111      ====> "1A1B" Secret: 1122     Secret: 121 Guess: 1222   ====> "3A0B"  Guess: 222    

[LeetCode] Bulls and Cows 公母牛游戏

You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret number and ask your friend to guess it, each time your friend guesses a number, you give a hint, the hint tells your friend how many digits are in the corr

POJ 2389 Bull Math(大数乘法,还是Java好)

Bull Math Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14252   Accepted: 7350 Description Bulls are so much better at math than the cows. They can multiply huge integers together and get perfectly precise answers ... or so they say. F

[LeetCode299]Bulls and Cows

题目: You are playing the following Bulls and Cows game with your friend: You write down a number and ask your friend to guess what the number is. Each time your friend makes a guess, you provide a hint that indicates how many digits in said guess matc