Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.BufferedReader;
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Stack;
- public class Solve2 {
- public static void main(String[] args) throws IOException {
- testInput();
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- String problem = in.readLine();
- problem = problem.replaceAll(" ", "");
- problem = problem.replaceAll("[()]", "");
- Stack<Integer> integers = new Stack<>();
- Stack<Character> signs = new Stack<>();
- String number;
- char sign;
- int i = 0;
- boolean isNumber = true;
- for (int j = 0; j < problem.length(); j++) {
- if (!Character.isDigit(problem.charAt(j))) {
- isNumber = false;
- break;
- }
- }
- if (isNumber) {
- System.out.println(problem);
- return;
- }
- while (problem.contains("*") || problem.contains("+") || problem.contains("-")) {
- if (problem.charAt(i) == '*' || problem.charAt(i) == '+' || problem.charAt(i) == '-') {
- number = problem.substring(0, i);
- sign = problem.substring(i, i + 1).charAt(0);
- integers.push(Integer.parseInt(number));
- signs.push(sign);
- problem = problem.substring(i + 1);
- i = 0;
- } else {
- i++;
- }
- }
- long finalSum = Integer.parseInt(problem);
- int rotations = integers.size();
- for (int j = 0; j < rotations; j++) {
- if (signs.peek() == '+') {
- finalSum += integers.pop();
- signs.pop();
- } else if (signs.peek() == '*') {
- finalSum *= integers.pop();
- signs.pop();
- } else if (signs.peek() == '-') {
- finalSum = integers.pop() - finalSum;
- signs.pop();
- }
- }
- System.out.println(finalSum);
- }
- private static void testInput() {
- String test = "546613216894946";
- System.setIn(new ByteArrayInputStream(test.getBytes()));
- }
- }
Add Comment
Please, Sign In to add comment