Given a large integer as a string str, the task is find the number of matchsticks required to represent it.
Examples:
Input: str = “56”
Output: 11
5 sticks are required to represent 5 and
6 sticks are required to represent 6.
Input: str = “548712458645878”
Output: 74
Approach: Store the count of match sticks required to represent every digit from 0 to 9 in an array sticks[]. Now traverse the given string digit by digit and add the count of sticks required for the current digit.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// stick[i] stores the count of sticks // required to represent the digit i const int sticks[] = { 6, 2, 5, 5, 4, 5,
6, 3, 7, 6 };
// Function to return the count of // matchsticks required to represent // the given number int countSticks(string str, int n)
{ int cnt = 0;
// For every digit of the given number
for ( int i = 0; i < n; i++) {
// Add the count of sticks required
// to represent the current digit
cnt += (sticks[str[i] - '0' ]);
}
return cnt;
} // Driver code int main()
{ string str = "56" ;
int n = str.length();
cout << countSticks(str, n);
return 0;
} |
// Java implementation of the approach import java.util.*;
class GFG
{ // stick[i] stores the count of sticks // required to represent the digit i static int sticks[] = { 6 , 2 , 5 , 5 , 4 , 5 ,
6 , 3 , 7 , 6 };
// Function to return the count of // matchsticks required to represent // the given number static int countSticks(String str, int n)
{ int cnt = 0 ;
// For every digit of the given number
for ( int i = 0 ; i < n; i++)
{
// Add the count of sticks required
// to represent the current digit
cnt += (sticks[str.charAt(i) - '0' ]);
}
return cnt;
} // Driver code public static void main(String []args)
{ String str = "56" ;
int n = str.length();
System.out.println(countSticks(str, n));
} } // This code is contributed by 29AjayKumar |
# Python3 implementation of the approach # stick[i] stores the count of sticks # required to represent the digit i sticks = [ 6 , 2 , 5 , 5 , 4 , 5 ,
6 , 3 , 7 , 6 ];
# Function to return the count of # matchsticks required to represent # the given number def countSticks(string, n) :
cnt = 0 ;
# For every digit of the given number
for i in range (n) :
# Add the count of sticks required
# to represent the current digit
cnt + = (sticks[ ord (string[i]) - ord ( '0' )]);
return cnt;
# Driver code if __name__ = = "__main__" :
string = "56" ;
n = len (string);
print (countSticks(string, n));
# This code is contributed by AnkitRai01 |
// C# implementation of the approach using System;
class GFG
{ // stick[i] stores the count of sticks // required to represent the digit i static int []sticks = { 6, 2, 5, 5, 4, 5,
6, 3, 7, 6 };
// Function to return the count of // matchsticks required to represent // the given number static int countSticks(String str, int n)
{ int cnt = 0;
// For every digit of the given number
for ( int i = 0; i < n; i++)
{
// Add the count of sticks required
// to represent the current digit
cnt += (sticks[str[i] - '0' ]);
}
return cnt;
} // Driver code public static void Main(String []args)
{ String str = "56" ;
int n = str.Length;
Console.WriteLine(countSticks(str, n));
} } // This code is contributed by 29AjayKumar |
<script> // Javascript implementation of the approach // stick[i] stores the count of sticks // required to represent the digit i var sticks = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 ]
// Function to return the count of // matchsticks required to represent // the given number function countSticks(str, n)
{ var cnt = 0;
// For every digit of the given number
for ( var i = 0; i < n; i++) {
// Add the count of sticks required
// to represent the current digit
cnt += (sticks[str[i] - '0' ]);
}
return cnt;
} // Driver code var str = "56" ;
var n = str.length;
document.write(countSticks(str, n)); // This code is contributed by rutvik_56. </script> |
11
Time Complexity: O(n)
Auxiliary Space: O(1)