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
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].
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.