Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เครื่องคิดเลขพื้นฐาน II ใน Python


สมมติว่าเราต้องใช้เครื่องคำนวณพื้นฐานเพื่อประเมินสตริงนิพจน์อย่างง่าย สตริงนิพจน์จะเก็บเฉพาะจำนวนเต็มที่ไม่ติดลบ ตัวดำเนินการบางตัวเช่น +, -, *, / และช่องว่าง การหารจำนวนเต็มควรใช้เฉพาะส่วนของผลหารเท่านั้น

ดังนั้นหากอินพุตเป็นเหมือน “3+2*2” เอาต์พุตจะเป็น 7

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนด stack s, i :=0, x :=an empty string
  • สำหรับแต่ละอักขระ j ใน s
    • ถ้า j ไม่ใช่อักขระว่าง
      • เติม j ต่อท้าย x
  • s :=x, n :=ความยาวของ x
  • ในขณะที่ฉัน
  • ถ้า s[i] คือ '/' แล้ว
    • เพิ่ม i ขึ้น 1
    • num :=ตัวเลขเริ่มต้นจากดัชนี ith จากนั้นอัปเดต i เป็นอักขระตัวสุดท้ายของตัวเลข
    • ถ้า stack top element <0 ให้อัปเดต stack top element เป็น -(stack top / num) มิฉะนั้น update stack top element เป็น (stack top / num)
  • มิฉะนั้น เมื่อ s[i] =“*”
    • เพิ่ม i ขึ้น 1
    • num :=ตัวเลขเริ่มต้นจากดัชนี ith จากนั้นอัปเดต i เป็นอักขระตัวสุดท้ายของตัวเลข
    • stack top :=num * stack top
  • มิฉะนั้น เมื่อ s[i] =‘-’
    • เพิ่ม i ขึ้น 1
    • num :=ตัวเลขเริ่มต้นจากดัชนี ith จากนั้นอัปเดต i เป็นอักขระตัวสุดท้ายของตัวเลข
    • แทรก –num ลงในสแต็ก
  • อย่างอื่น
    • num :=ตัวเลขเริ่มต้นจากดัชนี ith จากนั้นอัปเดต i เป็นอักขระตัวสุดท้ายของตัวเลข
    • ใส่ num ลงใน stack
    • เพิ่ม i ขึ้น 1
  • ส่งคืนผลรวมขององค์ประกอบของสแต็ก
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    คลาส Solution(object):def คำนวณ (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