Banking System with Accepted Transfers, Part 1: Accounts and Payments
Problem statement
Implement a simplified banking system. The assessment is cumulative: after unlocking a new level, every operation from the current and previous levels remains available.
Query and Output Rules
- Each query calls exactly one operation and includes a stringified millisecond
timestamp. - Timestamps are unique, lie between
1and10^9, and appear in strictly increasing order. - Return one string result for every query, in input order.
- Return the empty string when an operation has no successful scalar result, exactly as specified below.
Multipart Series
- Part 1: Accounts and Payments
- Part 2: Activity Ranking
- Part 3: Pending Transfer Acceptance
- Part 4: Account Merging and Balance History
Level 1: Accounts and Payments
The banking system should support creating new accounts, depositing money, and withdrawing or paying money from accounts.
CREATE_ACCOUNT <timestamp> <accountId>creates a new account with the givenaccountIdif it does not already exist. Return"true"if the account is created and"false"if it already exists.DEPOSIT <timestamp> <accountId> <amount>depositsamountinto the account. Return the account balance after processing the query, or the empty string if the account does not exist.PAY <timestamp> <accountId> <amount>withdrawsamountfrom the account. Return the account balance after processing the query. Return the empty string if the account does not exist or has insufficient funds.
Function
bankingAcceptedTransfersLevel1(queries: String[][]) → String[]Examples
Example 1
queries = [["CREATE_ACCOUNT","1","account1"],["CREATE_ACCOUNT","2","account1"],["CREATE_ACCOUNT","3","account2"],["DEPOSIT","4","non-existing","2700"],["DEPOSIT","5","account1","2700"],["PAY","6","non-existing","2700"],["PAY","7","account1","2701"],["PAY","8","account1","200"]]return = ["true","false","true","","2700","","","2500"]The duplicate account creation fails. Missing-account operations and an overdraw return empty strings. The final payment succeeds and leaves account1 with 2500.
Constraints
1 <= queries.length <= 500.- Every timestamp is a unique integer from
1through10^9, and queries are supplied in strictly increasing timestamp order. - Every query row is well formed and uses an operation available at this part.
- Amounts and
nare positive base-10 integers. Every balance and transaction total fits in a signed 64-bit integer. - Account identifiers are non-empty strings that do not contain commas or parentheses.