Given a number n. Count the number of changes in LED light when display one after another of a given number. (Initially all LED is off). Number is given input in the form of a string.
See this image of seven segment display for better understanding.
Examples:
Input : n = "082" Output : 9 We need 6 LED lights to display 0 in seven segment display. We need 7 lights for 8 and 5 lights for 2. So total on/off is 6 + 1 + 2 = 9. Input : n = "12345" Output : 7
Source :Morgan Stanley Interview Set 20
The idea is to pre-compute the led lights required to display a given number. Now iterate the number and keep adding the changes. For the implementation, a basic concept of string hashing is used.
Below is the implementation of above problem.
// CPP program to count number of on offs to // display digits of a number. #include<bits/stdc++.h> using namespace std;
int countOnOff(string n)
{ // store the led lights required to display
// a particular number.
int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
int len = n.length();
// compute the change in led and keep
// on adding the change
int sum = Led[n[0] - '0' ];
for ( int i = 1; i < len; i++) {
sum = sum + abs (Led[n[i] - '0' ] -
Led[n[i - 1] - '0' ]);
}
return sum;
} // Driver code int main()
{ string n = "082" ;
cout << countOnOff(n);
return 0;
} |
// Java program to count number of on offs to // display digits of a number. import java.io.*;
class GFG
{ static int countOnOff(String n)
{ // store the led lights required to display
// a particular number.
int Led[] = { 6 , 2 , 5 , 5 , 4 , 5 , 6 , 3 , 7 , 5 };
int len = n.length();
// compute the change in led and keep
// on adding the change
int sum = Led[n.charAt( 0 ) - '0' ];
for ( int i = 1 ; i < len; i++) {
sum = sum + Math.abs(Led[n.charAt(i) - '0' ] -
Led[n.charAt(i - 1 ) - '0' ]);
}
return sum;
} // Driver code public static void main(String args[])
{ String n = "082" ;
System.out.println( countOnOff(n) );
} } |
# Python3 program to count number of on offs to # display digits of a number. def countOnOff(n):
# store the led lights required to display
# a particular number.
Led = [ 6 , 2 , 5 , 5 , 4 , 5 , 6 , 3 , 7 , 5 ]
leng = len (n)
# compute the change in led and keep
# on adding the change
sum = Led[ int (n[ 0 ]) - int ( '0' )]
for i in range ( 1 ,leng):
sum = ( sum + abs (Led[ int (n[i]) - int ( '0' )]
- Led[ int (n[i - 1 ]) - int ( '0' )]))
return sum
#Driver code if __name__ = = '__main__' :
n = "082"
print (countOnOff(n))
# this code is contributed by # ash264 |
// C# program to count number of on // offs to display digits of a number. using System;
class GFG
{ public static int countOnOff( string n)
{ // store the led lights required
// to display a particular number.
int [] Led = new int [] {6, 2, 5, 5, 4,
5, 6, 3, 7, 5};
int len = n.Length;
// compute the change in led and
// keep on adding the change
int sum = Led[n[0] - '0' ];
for ( int i = 1; i < len; i++)
{
sum = sum + Math.Abs(Led[n[i] - '0' ] -
Led[n[i - 1] - '0' ]);
}
return sum;
} // Driver code public static void Main( string [] args)
{ string n = "082" ;
Console.WriteLine(countOnOff(n));
} } // This code is contributed by Shrikant13 |
<?php // PHP program to count number // of on offs to display digits // of a number. function countOnOff( $n )
{ // store the led lights required
// to display a particular number.
$Led = array (6, 2, 5, 5, 4,
5, 6, 3, 7, 5 );
$len = strlen ( $n );
// compute the change in led
// and keep on adding the change
$sum = $Led [ $n [0] - '0' ];
for ( $i = 1; $i < $len ; $i ++)
{
$sum = $sum + abs ( $Led [ $n [ $i ] - '0' ] -
$Led [ $n [ $i - 1] - '0' ]);
}
return $sum ;
} // Driver code $n = "082" ;
echo countOnOff( $n );
// This code is contributed // by Akanksha Rai ?> |
<script> // javascript program to count number of on offs to // display digits of a number. function countOnOff( n)
{ // store the led lights required to display
// a particular number.
var Led = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 ];
var len = n.length;
// compute the change in led and keep
// on adding the change
var sum = Led[n.charAt(0) - '0' ];
for (i = 1; i < len; i++) {
sum = sum + Math.abs(Led[n.charAt(i) - '0' ] -
Led[n.charAt(i - 1) - '0' ]);
}
return sum;
} // Driver code n = "082" ;
document.write( countOnOff(n) ); // This code is contributed by 29AjayKumar </script> |
9
Time Complexity: O(n), where n is the length of the given string.
Auxiliary Space: O(1), no extra space is added, so it is a constant.