-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCount8.java
29 lines (21 loc) · 886 Bytes
/
Count8.java
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
/*
Given a non-negative int n, compute recursively (no loops) the count of the occurrences of 8 as a digit, except that an 8 with another 8 immediately to its left counts double,
so 8818 yields 4. Note that mod (%) by 10 yields the rightmost digit (126 % 10 is 6), while divide (/) by 10 removes the rightmost digit (126 / 10 is 12).
count8(8) → 1
count8(818) → 2
count8(8818) → 4
*/
//https://codingbat.com/prob/p192383
public int count8(int n) {
//Solution - Hameed
if(n<10 && n%10 == 8) return 1;
else if(n<10 && n%10 != 8) return 0;
if(n%10==8 && (n/10)%10==8) return 2+count8(n/10);
else if (n%10 == 8) return 1+count8(n/10);
return 0+count8(n/10);
//Better solution:
//if (n < 1) return 0;
//if (n % 10 == 8 && (n / 10) % 10 == 8) return 2 + count8(n/10);
//else if (n % 10 == 8) return 1 + count8(n/10);
//else return count8(n/10);
}