Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Regeln für ein Bankkonto

Schütze den Kontostand durch Einzahlungs- und Abhebungsregeln und lehne ungültige Vorgänge ab.

Das lernst du

  • Zustand nur über Methoden ändern
  • Ungültige Beträge und Überziehungen ablehnen
  • Abgelehnte Operationen mitzählen

Problem

Encapsulation hält die Daten eines Objekts privat und verändert sie nur über Methoden, die die Regeln durchsetzen. Der Kontostand eines Bankkontos kann sich nur durch deposit und withdraw ändern.

Beginne mit einem Kontostand von 0 und verarbeite die Operationen, jeweils deposit <amount> oder withdraw <amount>:

  • Ein Betrag, der 0 oder negativ ist, wird abgelehnt.
  • Eine Abhebung, die größer als der aktuelle Kontostand ist, wird abgelehnt.
  • Andernfalls ändert sich der Kontostand.

Implementiere bank_account_rules(operations).

Eingabe

operations: Die Operationen in Reihenfolge.

Ausgabe

Gib [final_balance, rejected_count] zurück.

Einschränkungen

0 ≤ Anzahl der Operationen ≤ 100,000

−10^9 ≤ Betrag ≤ 10^9

Beispiele

Beispiel 1
Eingabe:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]

Erwartete Ausgabe:
expected = [70, 1]
Eingabe:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};

Erwartete Ausgabe:
std::vector<long long> expected = {70, 1};
Eingabe:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};

Erwartete Ausgabe:
long[] expected = new long[] {70, 1};

Erläuterung

100 − 30 ergibt 70; das Abheben von 200 würde das Konto überziehen, also wird es abgelehnt: [70, 1].

Beispiel 2
Eingabe:
operations = ["deposit -5", "withdraw 0", "deposit 10"]

Erwartete Ausgabe:
expected = [10, 2]
Eingabe:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};

Erwartete Ausgabe:
std::vector<long long> expected = {10, 2};
Eingabe:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};

Erwartete Ausgabe:
long[] expected = new long[] {10, 2};

Erläuterung

Die negative Einzahlung und die Null-Abhebung werden beide abgelehnt; die letzte Einzahlung gelingt: [10, 2].

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Halte den Kontostand privat und ändere ihn nur in deposit und withdraw.

Hinweis 2

Lehne Beträge von 0 oder weniger als Erstes ab.

Hinweis 3

Eine Abhebung darf den Kontostand nicht unter null bringen.

Erwartete Komplexität

Zeit O(Anzahl der Operationen), zusätzlicher Speicher O(1)

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.