📜  计算 LED 灯的变化以一一显示数字

📅  最后修改于: 2022-05-13 01:57:08.762000             🧑  作者: Mango

计算 LED 灯的变化以一一显示数字

给定一个数字 n。计算给定数字一个接一个显示时LED灯的变化次数。 (最初所有 LED 均熄灭)。 Number 以字符串的形式给出输入。
请参阅这张七段显示器的图像以更好地理解。
例子:

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

来源:摩根士丹利采访集20

这个想法是预先计算显示给定数字所需的 LED 灯。现在迭代数字并继续添加更改。对于实现,使用了字符串散列的基本概念。
下面是上述问题的实现。

C++
// CPP program to count number of on offs to
// display digits of a number.
#include
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
// 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) );
}
}


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 code
if __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


Javascript


输出:
9