forked from profpiyush/Hacktberfest-2021
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCheck if Number Has Equal Digit Count and Digit Value
89 lines (64 loc) · 2.17 KB
/
Check if Number Has Equal Digit Count and Digit Value
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
You are given a 0-indexed string num of length n consisting of digits.
Return true if for every index i in the range 0 <= i < n, the digit i occurs num[i] times in num, otherwise return false.
Example 1:
Input: num = "1210"
Output: true
Explanation:
num[0] = '1'. The digit 0 occurs once in num.
num[1] = '2'. The digit 1 occurs twice in num.
num[2] = '1'. The digit 2 occurs once in num.
num[3] = '0'. The digit 3 occurs zero times in num.
The condition holds true for every index in "1210", so return true.
Example 2:
Input: num = "030"
Output: false
Explanation:
num[0] = '0'. The digit 0 should occur zero times, but actually occurs twice in num.
num[1] = '3'. The digit 1 should occur three times, but actually occurs zero times in num.
num[2] = '0'. The digit 2 occurs zero times in num.
The indices 0 and 1 both violate the condition, so return false.
Constraints:
n == num.length
1 <= n <= 10
num consists of digits.
SOLUTION
class Solution {
public:
int store[10];
bool digitCount(string num) {
// int n = num.size();
// vector<int> store(n,0);
for(char c : num)
{
store[c-'0']++;
}
for(int i = 0; i < num.size(); i++)
{
if(num[i] - '0' != store[i])
return false;
}
return true;
}
};
Java HashMap Solution:
class Solution {
public boolean digitCount(String num) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int number = 0; number < num.length(); number++){
int frequency = Character.getNumericValue(num.charAt(number));
map.put(number,frequency);
}
for(int index = 0; index< num.length(); index++) {
if (Character.getNumericValue(num.charAt(index)) < num.length()) {
int frequency = map.get(Character.getNumericValue(num.charAt(index))) - 1;
map.put(Character.getNumericValue(num.charAt(index)), frequency);
}
}
for (int i = 0; i < num.length(); i++) {
if(map.get(i) !=0){
return false;
}
}
return true;
}
}