Count changes in Led Lights to display digits one by one - GeeksforGeeks

23 Mar, 2021
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++
Java
Python 3
C#
PHP
Javascript
// 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 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) );}}
# 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# 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 codepublic 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
 
ash264
Krishna_Yadav
shrikanth13
Akanksha_Rai
29AjayKumar
Morgan Stanley
programming-puzzle
Technical Scripter 2018
Strings
Morgan Stanley
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Top 50 String Coding Problems for Interviews
Print all the duplicates in the input string
Vigenère Cipher
sprintf() in C
Convert character array to string in C++
String class in Java | Set 1
How to Append a Character to a String in C
Program to count occurrence of a given character in a string
Naive algorithm for Pattern Searching
Boyer Moore Algorithm for Pattern Searching