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.
C++
// 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 codeint main(){ string n = "082"; cout << countOnOff(n); return 0;} |
Java
// 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 codepublic static void main(String args[]){ String n = "082"; System.out.println( countOnOff(n) );}} |
Python 3
# 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 codeif __name__=='__main__': n = "082" print(countOnOff(n))# this code is contributed by # ash264 |
C#
// 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// 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?> |
Javascript
<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 coden = "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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
