मान लीजिए हमें एक साधारण एक्सप्रेशन स्ट्रिंग का मूल्यांकन करने के लिए एक बेसिक कैलकुलेटर लागू करना है। एक्सप्रेशन स्ट्रिंग में केवल नॉन-नेगेटिव इंटीजर्स, कुछ ऑपरेटर्स जैसे +, -, *, / और खाली स्पेस होंगे। इंटीजर डिवीजन केवल कोएशिएंट पार्ट लेना चाहिए।
इसलिए यदि इनपुट \"3+2*2\" जैसा है, तो आउटपुट 7 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक स्टैक s परिभाषित करें, i := 0, x := एक खाली स्ट्रिंग
- s में प्रत्येक कैरेक्टर j के लिए
- यदि j ब्लैंक कैरेक्टर नहीं है
- j को x में ऐपेंड करें
- यदि j ब्लैंक कैरेक्टर नहीं है
- s := x, n := x की लंबाई
- जब तक i < n
- यदि s[i] '/' है, तो
- i को 1 से बढ़ाएं
- num := i-वें इंडेक्स से शुरू होने वाली संख्या, फिर i को संख्या के अंतिम कैरेक्टर के रूप में अपडेट करें
- यदि स्टैक टॉप एलिमेंट < 0, तो स्टैक टॉप एलिमेंट को -(स्टैक टॉप / num) के रूप में अपडेट करें, अन्यथा स्टैक टॉप एलिमेंट को (स्टैक टॉप / num) के रूप में अपडेट करें
- अन्यथा जब s[i] = \"*\"
- i को 1 से बढ़ाएं
- num := i-वें इंडेक्स से शुरू होने वाली संख्या, फिर i को संख्या के अंतिम कैरेक्टर के रूप में अपडेट करें
- स्टैक टॉप := num * स्टैक टॉप
- अन्यथा जब s[i] = '-'
- i को 1 से बढ़ाएं
- num := i-वें इंडेक्स से शुरू होने वाली संख्या, फिर i को संख्या के अंतिम कैरेक्टर के रूप में अपडेट करें
- -num को स्टैक में इन्सर्ट करें
- अन्यथा
- num := i-वें इंडेक्स से शुरू होने वाली संख्या, फिर i को संख्या के अंतिम कैरेक्टर के रूप में अपडेट करें
- num को स्टैक में इन्सर्ट करें
- i को 1 से बढ़ाएं
- यदि s[i] '/' है, तो
- स्टैक के एलिमेंट्स का योग लौटाएं
उदाहरण
class Solution(object):
def calculate(self, s):
\"\"\"
:type s: str
:rtype: int
\"\"\"
stack = []
i = 0
x=\"\"
for j in s:
if j !=\" \":
x+=j
s = x
n = len(s)
while iइनपुट
\"3+2*2\"
आउटपुट
7