1. 程式人生 > >Leetcode 299.猜字遊戲

Leetcode 299.猜字遊戲

猜字遊戲

你正在和你的朋友玩 猜數字(Bulls and Cows)遊戲:你寫下一個數字讓你的朋友猜。每次他猜測後,你給他一個提示,告訴他有多少位數字和確切位置都猜對了(稱為"Bulls", 公牛),有多少位數字猜對了但是位置不對(稱為"Cows", 奶牛)。你的朋友將會根據提示繼續猜,直到猜出祕密數字。

請寫出一個根據祕密數字和朋友的猜測數返回提示的函式,用 A 表示公牛,用 B 表示奶牛。

請注意祕密數字和朋友的猜測數都可能含有重複數字。

示例 1:

輸入: secret = "1807", guess = "7810"

 

輸出:

"1A3B"

 

解釋: 1 公牛和 3 奶牛。公牛是 8,奶牛是 0, 1 和 7。

示例 2:

輸入: secret = "1123", guess = "0111"

 

輸出: "1A1B"

 

解釋: 朋友猜測數中的第一個 1 是公牛,第二個或第三個 1 可被視為奶牛。

說明: 你可以假設祕密數字和朋友的猜測數都只包含數字,並且它們的長度永遠相等。

 1 public class Solution {
 2 
 3     public String getHint(String secret, String guess) {
4 int len=secret.length(); 5 6 int A=0; 7 int B=0; 8 int count[]=new int[10]; 9 10 for(int i=0;i<len;i++){ 11 int s=secret.charAt(i)-'0'; 12 int g=guess.charAt(i)-'0'; 13 if(s==g){ 14 A++; 15 }else
{ 16 if(count[g]>0){ //如果g這裡之前多出一個和g匹配的則B加1 17 B++; 18 } 19 20 if(count[s]<0){ //如果之前少一個和s匹配的,則B加1 21 B++; 22 } 23 24 count[g]--; //缺一個和g匹配的 25 count[s]++; //s這裡多一個匹配的 26 } 27 } 28 29 return A+"A"+B+"B"; 30 } 31 }