Skip to content

Commit ec2dfa0

Browse files
committed
feat: update solutions to lc problem: No.2283
No.2283.Check if Number Has Equal Digit Count and Digit Value
1 parent 8a3450a commit ec2dfa0

File tree

6 files changed

+54
-42
lines changed

6 files changed

+54
-42
lines changed

solution/2200-2299/2283.Check if Number Has Equal Digit Count and Digit Value/README.md

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ num[2] = '0' 。数字 2 在 num 中出现了 0 次。
4949

5050
<!-- 这里可写通用的实现逻辑 -->
5151

52+
**方法一:计数 + 枚举**
53+
54+
统计字符串中每个数字出现的次数,然后枚举每个数字,判断其出现的次数是否与其值相等,若都相等则返回 `true`,否则返回 `false`
55+
56+
时间复杂度 $O(n)$,空间复杂度 $O(C)$。其中 $n$ 是字符串 `num` 的长度,而 $C$ 是数字的个数。本题中 $C=10$。
57+
5258
<!-- tabs:start -->
5359

5460
### **Python3**
@@ -59,7 +65,7 @@ num[2] = '0' 。数字 2 在 num 中出现了 0 次。
5965
class Solution:
6066
def digitCount(self, num: str) -> bool:
6167
cnt = Counter(num)
62-
return all(int(v) == cnt[str(i)] for i, v in enumerate(num))
68+
return all(cnt[str(i)] == int(v) for i, v in enumerate(num))
6369
```
6470

6571
### **Java**
@@ -70,12 +76,12 @@ class Solution:
7076
class Solution {
7177
public boolean digitCount(String num) {
7278
int[] cnt = new int[10];
73-
for (char c : num.toCharArray()) {
74-
++cnt[c - '0'];
79+
int n = num.length();
80+
for (int i = 0; i < n; ++i) {
81+
++cnt[num.charAt(i) - '0'];
7582
}
76-
for (int i = 0; i < num.length(); ++i) {
77-
int v = num.charAt(i) - '0';
78-
if (cnt[i] != v) {
83+
for (int i = 0; i < n; ++i) {
84+
if (cnt[i] != num.charAt(i) - '0') {
7985
return false;
8086
}
8187
}
@@ -90,11 +96,14 @@ class Solution {
9096
class Solution {
9197
public:
9298
bool digitCount(string num) {
93-
vector<int> cnt(10);
94-
for (char& c : num) ++cnt[c - '0'];
99+
int cnt[10]{};
100+
for (char& c : num) {
101+
++cnt[c - '0'];
102+
}
95103
for (int i = 0; i < num.size(); ++i) {
96-
int v = num[i] - '0';
97-
if (cnt[i] != v) return false;
104+
if (cnt[i] != num[i] - '0') {
105+
return false;
106+
}
98107
}
99108
return true;
100109
}
@@ -105,13 +114,12 @@ public:
105114
106115
```go
107116
func digitCount(num string) bool {
108-
cnt := make([]int, 10)
117+
cnt := [10]int{}
109118
for _, c := range num {
110119
cnt[c-'0']++
111120
}
112-
for i, c := range num {
113-
v := int(c - '0')
114-
if cnt[i] != v {
121+
for i, v := range num {
122+
if cnt[i] != int(v-'0') {
115123
return false
116124
}
117125
}

solution/2200-2299/2283.Check if Number Has Equal Digit Count and Digit Value/README_EN.md

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ The indices 0 and 1 both violate the condition, so return false.
5353
class Solution:
5454
def digitCount(self, num: str) -> bool:
5555
cnt = Counter(num)
56-
return all(int(v) == cnt[str(i)] for i, v in enumerate(num))
56+
return all(cnt[str(i)] == int(v) for i, v in enumerate(num))
5757
```
5858

5959
### **Java**
@@ -62,12 +62,12 @@ class Solution:
6262
class Solution {
6363
public boolean digitCount(String num) {
6464
int[] cnt = new int[10];
65-
for (char c : num.toCharArray()) {
66-
++cnt[c - '0'];
65+
int n = num.length();
66+
for (int i = 0; i < n; ++i) {
67+
++cnt[num.charAt(i) - '0'];
6768
}
68-
for (int i = 0; i < num.length(); ++i) {
69-
int v = num.charAt(i) - '0';
70-
if (cnt[i] != v) {
69+
for (int i = 0; i < n; ++i) {
70+
if (cnt[i] != num.charAt(i) - '0') {
7171
return false;
7272
}
7373
}
@@ -82,11 +82,14 @@ class Solution {
8282
class Solution {
8383
public:
8484
bool digitCount(string num) {
85-
vector<int> cnt(10);
86-
for (char& c : num) ++cnt[c - '0'];
85+
int cnt[10]{};
86+
for (char& c : num) {
87+
++cnt[c - '0'];
88+
}
8789
for (int i = 0; i < num.size(); ++i) {
88-
int v = num[i] - '0';
89-
if (cnt[i] != v) return false;
90+
if (cnt[i] != num[i] - '0') {
91+
return false;
92+
}
9093
}
9194
return true;
9295
}
@@ -97,13 +100,12 @@ public:
97100
98101
```go
99102
func digitCount(num string) bool {
100-
cnt := make([]int, 10)
103+
cnt := [10]int{}
101104
for _, c := range num {
102105
cnt[c-'0']++
103106
}
104-
for i, c := range num {
105-
v := int(c - '0')
106-
if cnt[i] != v {
107+
for i, v := range num {
108+
if cnt[i] != int(v-'0') {
107109
return false
108110
}
109111
}

solution/2200-2299/2283.Check if Number Has Equal Digit Count and Digit Value/Solution.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
class Solution {
22
public:
33
bool digitCount(string num) {
4-
vector<int> cnt(10);
5-
for (char& c : num) ++cnt[c - '0'];
4+
int cnt[10]{};
5+
for (char& c : num) {
6+
++cnt[c - '0'];
7+
}
68
for (int i = 0; i < num.size(); ++i) {
7-
int v = num[i] - '0';
8-
if (cnt[i] != v) return false;
9+
if (cnt[i] != num[i] - '0') {
10+
return false;
11+
}
912
}
1013
return true;
1114
}

solution/2200-2299/2283.Check if Number Has Equal Digit Count and Digit Value/Solution.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
func digitCount(num string) bool {
2-
cnt := make([]int, 10)
2+
cnt := [10]int{}
33
for _, c := range num {
44
cnt[c-'0']++
55
}
6-
for i, c := range num {
7-
v := int(c - '0')
8-
if cnt[i] != v {
6+
for i, v := range num {
7+
if cnt[i] != int(v-'0') {
98
return false
109
}
1110
}

solution/2200-2299/2283.Check if Number Has Equal Digit Count and Digit Value/Solution.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
class Solution {
22
public boolean digitCount(String num) {
33
int[] cnt = new int[10];
4-
for (char c : num.toCharArray()) {
5-
++cnt[c - '0'];
4+
int n = num.length();
5+
for (int i = 0; i < n; ++i) {
6+
++cnt[num.charAt(i) - '0'];
67
}
7-
for (int i = 0; i < num.length(); ++i) {
8-
int v = num.charAt(i) - '0';
9-
if (cnt[i] != v) {
8+
for (int i = 0; i < n; ++i) {
9+
if (cnt[i] != num.charAt(i) - '0') {
1010
return false;
1111
}
1212
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
class Solution:
22
def digitCount(self, num: str) -> bool:
33
cnt = Counter(num)
4-
return all(int(v) == cnt[str(i)] for i, v in enumerate(num))
4+
return all(cnt[str(i)] == int(v) for i, v in enumerate(num))

0 commit comments

Comments
 (0)