Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import static java.lang.Character.isDigit;
- import static java.lang.Character.isLetter;
- public class BaseballGame {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- Queue<String> queue = new LinkedList<>();
- Stack<Integer> stack = new Stack<>();
- String input = scanner.nextLine();
- for (int i = 0; i < input.length(); i++) {
- if(input.charAt(i) == '-'){
- stack.add(-input.charAt(i+1));
- continue;
- }
- if (isDigit(input.charAt(i))) {
- stack.add(Character.getNumericValue(input.charAt(i)));
- }
- if(isLetter(input.charAt(i))){
- if(input.charAt(i) == 'C' || input.charAt(i) == 'D'){
- queue.offer(Character.toString(input.charAt(i)));
- }
- }
- if(input.charAt(i) == '+'){
- queue.offer(Character.toString(input.charAt(i)));
- }
- }
- while(!queue.isEmpty()) {
- int result = 0;
- if (queue.peek().equals("C")) {
- stack.pop();
- queue.poll();
- }
- if (queue.peek().equals("D")) {
- result = stack.peek() * 2;
- stack.push(result);
- queue.poll();
- }
- if (queue.peek().equals("+")) {
- int temp1 = stack.pop();
- int temp2 = stack.pop();
- result = temp1 + temp2;
- stack.push(temp2);
- stack.push(temp1);
- stack.push(result);
- queue.poll();
- }
- }
- int total = 0;
- for (int n : stack) {
- total += n;
- }
- System.out.println(total);
- }
- }
- // TODO
- // EXAMPLE 1:
- // Input: ops = ["5","2","C","D","+"]
- // Output: 30
- // Explanation:
- // "5" - Add 5 to the record, record is now [5].
- // "2" - Add 2 to the record, record is now [5, 2].
- // "C" - Invalidate and remove the previous score, record is now [5].
- // "D" - Add 2 * 5 = 10 to the record, record is now [5, 10].
- // "+" - Add 5 + 10 = 15 to the record, record is now [5, 10, 15].
- // The total sum is 5 + 10 + 15 = 30.
- // EXAMPLE 2:
- // Input: ops = ["5","-2","4","C","D","9","+","+"]
- // Output: 27
- // Explanation:
- // "5" - Add 5 to the record, record is now [5].
- // "-2" - Add -2 to the record, record is now [5, -2].
- // "4" - Add 4 to the record, record is now [5, -2, 4].
- // "C" - Invalidate and remove the previous score, record is now [5, -2].
- // "D" - Add 2 * -2 = -4 to the record, record is now [5, -2, -4].
- // "9" - Add 9 to the record, record is now [5, -2, -4, 9].
- // "+" - Add -4 + 9 = 5 to the record, record is now [5, -2, -4, 9, 5].
- // "+" - Add 9 + 5 = 14 to the record, record is now [5, -2, -4, 9, 5, 14].
- // The total sum is 5 + -2 + -4 + 9 + 5 + 14 = 27.
- // EXAMPLE 3:
- // Input: ops = ["1","C"]
- // Output: 0
- // Explanation:
- // "1" - Add 1 to the record, record is now [1].
- // "C" - Invalidate and remove the previous score, record is now [].
- // Since the record is empty, the total sum is 0.
- // Constraints:
- // 1 <= operations.length <= 1000
- // operations[i] is "C", "D", "+", or a string representing an integer in the range [-3 * 104, 3 * 104].
- // For operation "+", there will always be at least two previous scores on the record.
- // For operations "C" and "D", there will always be at least one previous score on the record.
- //
Advertisement
Add Comment
Please, Sign In to add comment