Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 기본 계산기 II

<시간/>

간단한 표현식 문자열을 평가하기 위해 기본 계산기를 구현해야 한다고 가정합니다. 표현식 문자열은 음수가 아닌 정수, +, -, *, / 및 빈 공간과 같은 일부 연산자만 보유합니다. 정수 나누기는 몫 부분만 취해야 합니다.

따라서 입력이 "3+2*2"와 같으면 출력은 7이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 스택 정의 s, i :=0, x :=빈 문자열
  • s
      의 각 문자 j에 대해
    • j가 공백 문자가 아닌 경우
      • x에 j 추가
  • s :=x, n :=x의 길이
  • 내가 인 동안
  • s[i]가 '/'이면
    • i를 1 증가
    • num :=i번째 인덱스부터 시작하는 숫자, 숫자의 마지막 문자로 i를 업데이트
    • 스택 맨 위 요소 <0이면 스택 맨 위 요소를 -(stack top / num)으로 업데이트하고, 그렇지 않으면 스택 맨 위 요소를 (stack top / num)으로 업데이트합니다.
  • 그렇지 않으면 s[i] ="*"
    • i를 1 증가
    • num :=i번째 인덱스부터 시작하는 숫자, 숫자의 마지막 문자로 i를 업데이트
    • 스택 상단 :=num * 스택 상단
  • 그렇지 않으면 s[i] ='-'
    • i를 1 증가
    • num :=i번째 인덱스부터 시작하는 숫자, 숫자의 마지막 문자로 i를 업데이트
    • 스택에 –num 삽입
  • 그렇지 않으면
    • num :=i번째 인덱스부터 시작하는 숫자, 숫자의 마지막 문자로 i를 업데이트
    • 스택에 숫자 삽입
    • i를 1 증가
  • 스택 요소의 합계 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시

    class 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