Given an integer num, the task is to count the number of holes in that number. The holes in each digit are given below:
Digit | Number of Holes |
---|---|
0 | 1 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 1 |
5 | 0 |
6 | 1 |
7 | 0 |
8 | 2 |
9 | 1 |
Examples:
Input: num = 6457819
Output: 5Input: num = 2537312
Output: 0
Approach: Initialize holes = 0 and an array hole[] with the values given where hole[i] stores the number of holes in the digit i. Now, for every digit d in num update holes = holes + hole[d]. Print the holes in the end.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Global array for hole values int hole[] = { 1, 0, 0, 0, 1, 0, 1, 0, 2, 1 };
// Function to return the count // of holes in num int countHoles( int num)
{ int holes = 0;
while (num > 0) {
// Last digit in num
int d = num % 10;
// Update holes
holes += hole[d];
// Remove last digit
num /= 10;
}
// Return the count of holes
// in the original num
return holes;
} // Driver code int main()
{ int num = 6457819;
cout << countHoles(num);
return 0;
} |
Java
// Java implementation of the approach import java.io.*;
class GFG
{ // Global array for hole values static int hole[] = { 1 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 2 , 1 };
// Function to return the count // of holes in num static int countHoles( int num)
{ int holes = 0 ;
while (num > 0 )
{
// Last digit in num
int d = num % 10 ;
// Update holes
holes += hole[d];
// Remove last digit
num /= 10 ;
}
// Return the count of holes
// in the original num
return holes;
} // Driver code public static void main (String[] args)
{ int num = 6457819 ;
System.out.println(countHoles(num));
} } // This code is contributed by // shk |
Python3
# Python3 implementation of the approach # Global array for hole values hole = [ 1 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 2 , 1 ]
# Function to return the count # of holes in num def countHoles(num):
holes = 0
while (num > 0 ) :
# Last digit in num
d = num % 10
# Update holes
holes = holes + hole[d]
# Remove last digit
num = num / / 10
# Return the count of holes
# in the original num
return holes
# Driver code num = 6457819
print (countHoles(num))
# This code is contributed by ihritik |
C#
// C# implementation of the approach using System;
class GFG
{ // Global array for hole values
static int []hole = { 1, 0, 0, 0, 1, 0, 1, 0, 2, 1 };
// Function to return the count
// of holes in num
static int countHoles( int num)
{
int holes = 0;
while (num > 0)
{
// Last digit in num
int d = num % 10;
// Update holes
holes += hole[d];
// Remove last digit
num /= 10;
}
// Return the count of holes
// in the original num
return holes;
}
// Driver code
public static void Main()
{
int num = 6457819;
Console.WriteLine(countHoles(num));
}
} // This code is contributed by Ryuga |
PHP
<?php // PHP implementation of the approach // Global array for hole values $hole = array (1, 0, 0, 0, 1, 0, 1, 0, 2, 1);
// Function to return the count // of holes in num function countHoles( $num )
{ global $hole ;
$holes = 0;
while ( $num > 0)
{
// Last digit in num
$d = $num % 10;
// Update holes
$holes += $hole [ $d ];
// Remove last digit
$num = (int)( $num / 10);
}
// Return the count of holes
// in the original num
return $holes ;
} // Driver code $num = 6457819;
echo countHoles( $num );
// This code is contributed // by Akanksha Rai ?> |
Javascript
<script> // Javascript implementation of the approach // Global array for hole values let hole = [ 1, 0, 0, 0, 1, 0, 1, 0, 2, 1 ]; // Function to return the count // of holes in num function countHoles( num)
{ let holes = 0;
while (num > 0) {
// Last digit in num
let d = num % 10;
// Update holes
holes += hole[d];
// Remove last digit
num = Math.floor(num/10);
}
// Return the count of holes
// in the original num
return holes;
} // Driver Code
let num = 6457819;
document.write(countHoles(num));
</script> |
Output
5
Time Complexity: O(log10 (num))
Auxiliary Space: O(1), As constant extra space is used.