Вот небольшая прелюдия к более общему вопросу, о котором мне интересно:Как узнать, когда использовать Stack вместо других коллекций?
Я недавно занимался программированием, когда вы должны написать метод, который проверяет баланс круглых скобок в данной строке. Предполагалось, что метод должен принимать строку и возвращать индекс, в котором первые дополнительные «)» или «(« круглые скобки », или длина строки, если они равны. Некоторые примеры входных данных были бы такими:») (asdf))) "- 0; "((((asdf)))" - 0; "(((asdf))" - 1; "(ab) (((cd) (asdf)" - 5.
Я начал с попытки создайте список для каждого направления круглых скобок, в котором будут храниться индексы всех из них в String. Затем я пройду через каждый символ в String, добавлю его индекс в любой из них, если он будет соответствовать, и проверьте, были ли они уже В некоторых случаях эта стратегия работала, но некоторые сценарии по-прежнему не удались. Чувствуя, что я застрял, я проверил некоторые другие ответы на вызов и увидел, что они используют Stack для хранения индекса левых скобок, который они будут нажимать на и поп с этого момента, когда это необходимо. Этот способ работал много, намного лучше, и я чувствовал себя немного смущенным из-за того, что не думал об этом сам.
Это подводит меня к моему вопросу ... как я могу ow, когда лучше использовать Stack над другими различными коллекциями? Каковы некоторые распространенные вещи, которые могут меня опрокинуть, чтобы использовать Stack над любой другой коллекцией?
Я знаю, как стеки работают и использовали их в некоторых учебниках и т. Д., Но никогда не использовали их в реальном мире ... которые, видя простоту, которую они создали с вызовом, заставляют меня думать, что я упустили некоторые возможности для упрощения/улучшения кода.
Возможно, слишком просто, но вы используете стек в любое время, когда у вас есть требование к обработке LIFO. – BradleyDotNET
Правильно, в основном в любое время, когда вы работаете в основном с одним «концом» списка. Такие вещи («как я знаю, чтобы использовать X») становятся легче с опытом. Вы разобрались, когда у вас будет больше примеров для практики. – markspace