Skip to content

Commit 78906da

Browse files
committedMar 19, 2021
feat: add solutions to leetcode problem: No.0299
1 parent 2bbb460 commit 78906da

File tree

4 files changed

+107
-54
lines changed

4 files changed

+107
-54
lines changed
 

‎solution/0200-0299/0299.Bulls and Cows/README.md

+37-2
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,50 @@
4040
<!-- 这里可写当前语言的特殊实现逻辑 -->
4141

4242
```python
43-
43+
class Solution:
44+
def getHint(self, secret: str, guess: str) -> str:
45+
a_cnt = b_cnt = 0
46+
nums1 = dict()
47+
nums2 = dict()
48+
for i in range(len(secret)):
49+
if secret[i] == guess[i]:
50+
a_cnt += 1
51+
else:
52+
nums1[secret[i]] = nums1.get(secret[i], 0) + 1
53+
nums2[guess[i]] = nums2.get(guess[i], 0) + 1
54+
for i, v in nums1.items():
55+
if i in nums2:
56+
b_cnt += min(v, nums2[i])
57+
return f'{a_cnt}A{b_cnt}B'
4458
```
4559

4660
### **Java**
4761

4862
<!-- 这里可写当前语言的特殊实现逻辑 -->
4963

5064
```java
51-
65+
class Solution {
66+
public String getHint(String secret, String guess) {
67+
int aCnt = 0, bCnt = 0;
68+
Map<Character, Integer> nums1 = new HashMap<>();
69+
Map<Character, Integer> nums2 = new HashMap<>();
70+
for (int i = 0; i < secret.length(); ++i) {
71+
if (secret.charAt(i) == guess.charAt(i)) {
72+
++aCnt;
73+
} else {
74+
nums1.put(secret.charAt(i), nums1.getOrDefault(secret.charAt(i), 0) + 1);
75+
nums2.put(guess.charAt(i), nums2.getOrDefault(guess.charAt(i), 0) + 1);
76+
}
77+
}
78+
79+
for (Map.Entry<Character, Integer> entry : nums1.entrySet()) {
80+
if (nums2.containsKey(entry.getKey())) {
81+
bCnt += Math.min(entry.getValue(), nums2.get(entry.getKey()));
82+
}
83+
}
84+
return String.format("%dA%dB", aCnt, bCnt);
85+
}
86+
}
5287
```
5388

5489
### **...**

‎solution/0200-0299/0299.Bulls and Cows/README_EN.md

+37-2
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,48 @@
4747
### **Python3**
4848

4949
```python
50-
50+
class Solution:
51+
def getHint(self, secret: str, guess: str) -> str:
52+
a_cnt = b_cnt = 0
53+
nums1 = dict()
54+
nums2 = dict()
55+
for i in range(len(secret)):
56+
if secret[i] == guess[i]:
57+
a_cnt += 1
58+
else:
59+
nums1[secret[i]] = nums1.get(secret[i], 0) + 1
60+
nums2[guess[i]] = nums2.get(guess[i], 0) + 1
61+
for i, v in nums1.items():
62+
if i in nums2:
63+
b_cnt += min(v, nums2[i])
64+
return f'{a_cnt}A{b_cnt}B'
5165
```
5266

5367
### **Java**
5468

5569
```java
56-
70+
class Solution {
71+
public String getHint(String secret, String guess) {
72+
int aCnt = 0, bCnt = 0;
73+
Map<Character, Integer> nums1 = new HashMap<>();
74+
Map<Character, Integer> nums2 = new HashMap<>();
75+
for (int i = 0; i < secret.length(); ++i) {
76+
if (secret.charAt(i) == guess.charAt(i)) {
77+
++aCnt;
78+
} else {
79+
nums1.put(secret.charAt(i), nums1.getOrDefault(secret.charAt(i), 0) + 1);
80+
nums2.put(guess.charAt(i), nums2.getOrDefault(guess.charAt(i), 0) + 1);
81+
}
82+
}
83+
84+
for (Map.Entry<Character, Integer> entry : nums1.entrySet()) {
85+
if (nums2.containsKey(entry.getKey())) {
86+
bCnt += Math.min(entry.getValue(), nums2.get(entry.getKey()));
87+
}
88+
}
89+
return String.format("%dA%dB", aCnt, bCnt);
90+
}
91+
}
5792
```
5893

5994
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,22 @@
1-
public class Solution {
1+
class Solution {
22
public String getHint(String secret, String guess) {
3-
4-
if (secret == null || guess == null
5-
|| secret.length() != guess.length()) {
6-
return "";
7-
}
8-
9-
char[] s = secret.toCharArray();
10-
char[] g = guess.toCharArray();
11-
12-
int A = 0, B = 0;
13-
14-
// 统计bulls
15-
for (int i = 0; i < s.length; i++) {
16-
if (s[i] == g[i]) {
17-
s[i] = '#';
18-
g[i] = '#';
19-
A++;
20-
}
21-
}
22-
23-
// 统计cows
24-
25-
Map<Character, Integer> map = new HashMap<Character, Integer>();
26-
27-
for (int i = 0; i < s.length; i++) {
28-
if (s[i] != '#') {
29-
if (!map.containsKey(s[i])) {
30-
map.put(s[i], 1);
31-
} else {
32-
int times = map.get(s[i]);
33-
times++;
34-
map.put(s[i], times);
35-
}
36-
}
37-
}
38-
39-
for (int i = 0; i < g.length; i++) {
40-
if (g[i] != '#') {
41-
if (map.containsKey(g[i]) && map.get(g[i]) != 0) {
42-
int times = map.get(g[i]);
43-
times--;
44-
map.put(g[i], times);
45-
B++;
46-
}
47-
}
48-
}
49-
50-
return A + "A" + B + "B";
51-
3+
int aCnt = 0, bCnt = 0;
4+
Map<Character, Integer> nums1 = new HashMap<>();
5+
Map<Character, Integer> nums2 = new HashMap<>();
6+
for (int i = 0; i < secret.length(); ++i) {
7+
if (secret.charAt(i) == guess.charAt(i)) {
8+
++aCnt;
9+
} else {
10+
nums1.put(secret.charAt(i), nums1.getOrDefault(secret.charAt(i), 0) + 1);
11+
nums2.put(guess.charAt(i), nums2.getOrDefault(guess.charAt(i), 0) + 1);
12+
}
13+
}
5214

15+
for (Map.Entry<Character, Integer> entry : nums1.entrySet()) {
16+
if (nums2.containsKey(entry.getKey())) {
17+
bCnt += Math.min(entry.getValue(), nums2.get(entry.getKey()));
18+
}
19+
}
20+
return String.format("%dA%dB", aCnt, bCnt);
5321
}
5422
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def getHint(self, secret: str, guess: str) -> str:
3+
a_cnt = b_cnt = 0
4+
nums1 = dict()
5+
nums2 = dict()
6+
for i in range(len(secret)):
7+
if secret[i] == guess[i]:
8+
a_cnt += 1
9+
else:
10+
nums1[secret[i]] = nums1.get(secret[i], 0) + 1
11+
nums2[guess[i]] = nums2.get(guess[i], 0) + 1
12+
for i, v in nums1.items():
13+
if i in nums2:
14+
b_cnt += min(v, nums2[i])
15+
return f'{a_cnt}A{b_cnt}B'

0 commit comments

Comments
 (0)
Please sign in to comment.