Menu
CoddyTech
flag Ar iconالعربيةdown icon

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.

lock icon+18 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

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

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

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

المتوقع

20