Problème
Afficher l’original (anglais)Considérez chaque fenêtre contiguë de span chiffres et multipliez ses chiffres. Retournez le plus grand produit obtenu. Les zéros initiaux sont des chiffres ordinaires ; une fenêtre contenant un zéro a un produit nul. Ne réordonnez ni ne sautez aucun chiffre.
Implémentez largest_adjacent_digit_product(digits, span).
Entrée
digits : La séquence de chiffres, y compris les éventuels zéros initiaux.
span : Le nombre exact de chiffres adjacents dans une fenêtre.
Sortie
Retournez le plus grand produit parmi toutes les fenêtres de cette largeur.
Contraintes
1 ≤ longueur de la chaîne de chiffres ≤ 100 000. Les caractères sont 0…9. 1 ≤ span ≤ min(18, longueur). Tous les produits tiennent dans un entier signé 64 bits.
Exemples
Entrée :
span = 2
digits = "23405"
Sortie attendue :
expected = 12
Entrée :
long long span = 2;
std::string digits = "23405";
Sortie attendue :
long long expected = 12;
Entrée :
long span = 2;
string digits = "23405";
Sortie attendue :
long expected = 12;
Explication
Les fenêtres 23, 34, 40 et 05 ont pour produits 6, 12, 0 et 0. Le plus grand est 12.
Entrée :
span = 3
digits = "102"
Sortie attendue :
expected = 0
Entrée :
long long span = 3;
std::string digits = "102";
Sortie attendue :
long long expected = 0;
Entrée :
long span = 3;
string digits = "102";
Sortie attendue :
long expected = 0;
Explication
Il n'y a qu'une seule fenêtre de largeur trois. Elle contient un zéro, donc 1 × 0 × 2 = 0.
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.