Tous les défis
Facile 0 résolus 0 % de réussite

Règles d'un compte bancaire

Protégez le solde d'un compte derrière des règles de dépôt et de retrait, en rejetant les opérations invalides.

Ce que vous allez apprendre

  • Ne modifier l'état que par des méthodes
  • Refuser les montants invalides et les découverts
  • Compter les opérations refusées

Problème

L'encapsulation garde les données d'un objet privées et ne les modifie qu'à travers des méthodes qui appliquent les règles. Le solde d'un compte bancaire ne peut changer que par deposit et withdraw.

Commencez avec un solde de 0 et traitez les opérations, chacune étant deposit <amount> ou withdraw <amount> :

  • Un montant égal à 0 ou négatif est rejeté.
  • Un retrait supérieur au solde actuel est rejeté.
  • Sinon, le solde change.

Implémentez bank_account_rules(operations).

Entrée

operations: Les opérations, dans l'ordre.

Sortie

Retournez [final_balance, rejected_count].

Contraintes

0 ≤ nombre d'opérations ≤ 100,000

−10^9 ≤ montant ≤ 10^9

Exemples

Exemple 1
Entrée :
operations = ["deposit 100", "withdraw 30", "withdraw 200"]

Sortie attendue :
expected = [70, 1]
Entrée :
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};

Sortie attendue :
std::vector<long long> expected = {70, 1};
Entrée :
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};

Sortie attendue :
long[] expected = new long[] {70, 1};

Explication

100 − 30 laisse 70 ; retirer 200 mettrait le compte à découvert, c'est donc refusé : [70, 1].

Exemple 2
Entrée :
operations = ["deposit -5", "withdraw 0", "deposit 10"]

Sortie attendue :
expected = [10, 2]
Entrée :
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};

Sortie attendue :
std::vector<long long> expected = {10, 2};
Entrée :
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};

Sortie attendue :
long[] expected = new long[] {10, 2};

Explication

Le dépôt négatif et le retrait nul sont refusés ; le dernier dépôt réussit : [10, 2].

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Gardez le solde privé et modifiez-le seulement dans deposit et withdraw.

Indice 2

Refusez d'abord les montants nuls ou négatifs.

Indice 3

Un retrait ne peut pas faire passer le solde sous zéro.

Complexité attendue

temps O(nombre d'opérations), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.