Menu
CoddyTech

Evaluate Reverse Polish Notation

متوسطالمكدسpython iconjava iconcpp iconc iconjs icon+10

تحصل على تعبير حسابي بترميز بولندي عكسي، على هيئة مصفوفة من الرموز. يأتي كل عامل مباشرةً بعد معامليه، لذا تعني 3 4 + 3 + 4، وتعني 3 4 + 2 * (3 + 4) * 2، من دون أقواس. كل رمز هو عدد صحيح أو أحد العوامل + و- و* و/.

أعِد قيمة التعبير. يُقرَّب ناتج القسمة باتجاه الصفر: 7 / 2 تساوي 3، و-7 / 2 تساوي -3.

الدالة

evalRPN(tokens: string-array) → integer
tokensstring-array
الأعداد والعوامل في التعبير، بالترتيب
تُرجعinteger
قيمة التعبير

القيود

  • 1 ≤ tokens.length ≤ 104
  • كل رمز هو + أو - أو * أو / أو عدد صحيح من -200 إلى 200 مكتوب بالنظام العشري، مع إشارة ناقص في بدايته إذا كان سالبًا.
  • tokens تعبير صالح بالتدوين البولندي العكسي.
  • لا تحدث أي قسمة على صفر، وتكون كل قيمة وسيطة ونهائية أكبر من -231 وأقل من 231.

أمثلة

المدخلات
tokens = ["8", "3", "-", "4", "*"]
المخرجات
20
الشرح
يُطبَّق - على 8 ثم 3، بهذا الترتيب، لذا يعطي 5، وليس -5. ثم تضرب * ذلك الـ5 في 4، ما يعطي 20.
challenge icon

سؤال إضافي

هل يمكنك إعادة كتابة التعبير بالصيغة العادية، مثل (3 + 4) * 2، مع إضافة الأقواس فقط حيثما تغيّر المعنى؟

إعادة ضبط الشيفرة
def evalRPN(tokens):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

tokens = ["8", "3", "-", "4", "*"]

الإخراج المتوقع

20