Torna alle sfide
Facile 0 risolte 0% di accettazione

Regole di un conto bancario

Proteggi il saldo di un conto con regole di deposito e prelievo, rifiutando le operazioni non valide.

Cosa imparerai

  • Cambiare lo stato solo tramite metodi
  • Rifiutare importi non validi e scoperti
  • Contare le operazioni rifiutate

Problema

L'incapsulamento mantiene privati i dati di un oggetto e li modifica solo tramite metodi che fanno rispettare le regole. Il saldo di un conto bancario può cambiare solo tramite deposit e withdraw.

Inizia con un saldo di 0 e processa le operazioni, ciascuna deposit <amount> o withdraw <amount>:

  • Un importo che è 0 o negativo viene rifiutato.
  • Un prelievo più grande del saldo attuale viene rifiutato.
  • Altrimenti il saldo cambia.

Implementa bank_account_rules(operations).

Input

operations: Le operazioni, nell'ordine.

Output

Restituisci [final_balance, rejected_count].

Vincoli

0 ≤ numero di operazioni ≤ 100,000

−10^9 ≤ importo ≤ 10^9

Esempi

Esempio 1
Input:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]

Output atteso:
expected = [70, 1]
Input:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};

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

Output atteso:
long[] expected = new long[] {70, 1};

Spiegazione

100 − 30 lascia 70; prelevare 200 andrebbe oltre il saldo, quindi viene rifiutato: [70, 1].

Esempio 2
Input:
operations = ["deposit -5", "withdraw 0", "deposit 10"]

Output atteso:
expected = [10, 2]
Input:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};

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

Output atteso:
long[] expected = new long[] {10, 2};

Spiegazione

Il deposito negativo e il prelievo zero vengono entrambi rifiutati; l'ultimo deposito riesce: [10, 2].

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Tieni il saldo privato e cambialo solo in deposit e withdraw.

Suggerimento 2

Rifiuta prima di tutto gli importi pari a 0 o negativi.

Suggerimento 3

Un prelievo non può portare il saldo sotto zero.

Complessità attesa

tempo O(numero di operazioni), spazio aggiuntivo O(1)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.