Как разработчик, нам иногда нужно вернуться к основным понятиям, чтобы быть более эффективными.
Здесь у нас есть постфиксноевыражение. Это математическое выражение, но с операторами, написанными после операндов, а не перед ними.
1 + 1 становится 1 1 +
1 + 2 * 3 + 4 становится 1 2 3 * + 4 +
- поддерживается многими модными калькуляторами
- никогда не нужно использовать скобки
- никогда не нужно использовать символ = для оценки на калькуляторе
Напишите метод postfixEvaluate, который принимает строку постфиксного
выражения, оценивает ее и возвращает результат.
Все операнды являются целыми числами; допустимые операторы + , -, * и /
Наша функция postFixEvaluate("5 2 4 * + 7 -") возвращает 6.
Алгоритм: используйте стек
– Когда вы видите операнд, поместите его в стек.
– Когда вы видите оператор.
• извлеките последние два операнда из стека.
• примените к ним оператор.
• поместить результат в стек.
– Когда вы закончите, один оставшийся элемент стека будет результатом.
Мотивация стека/очереди
- Иногда полезно иметь менее мощную коллекцию,
но оптимизированную для очень быстрого выполнения определенных операций. - Стеки и очереди мало что делают, но делают это эффективно.
Содержание адаптировано со слайдов Марти Степп и Элен Мартин
https://www.cs.washington.edu/143/