【leetcode】Evaluate Reverse Polish Notation

8250 단어 LeetCode

Evaluate Reverse Polish Notation


제목 설명:


Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, ,/. Each operand may be an integer or another expression.Some exampless: ["2", "1", "+", "3", "] -> (2 + 1) 3) -> 9 ["4","13","5","/","+"] -> (4 + (13/5)-> 6*) 쉽게 말하면 계산역폴란드식의 값입니다.

문제 해결 방법:


이것이 바로 창고에 들어가는 문제로 튀어나온 원소의 유형과 창고 꼭대기에 있는 원소의 유형에 따라 다른 결과를 얻는다.입력에서 뽐내는 것은 바로 숫자와 연산자라는 두 가지 상황입니다. 조합해 보면 다음과 같은 몇 가지 상황이 있습니다. 1.숫자, 다음 또는 숫자 팝업: 압축, 연산자 계산 대기 2.숫자가 튀어나왔고, 다음은 연산자: 창고 압축, 연산자 계산 대기 3.팝업은 연산자입니다. 다음은 숫자입니다. 창고에서 두 개의 조작수를 팝업해서 계산합니다.팝업은 연산자입니다. 다음은 연산자입니다. 창고에서 두 개의 조작수를 꺼내서 계산합니다. 종합하면 숫자는 창고를 누르고, 연산자는 두 개의 수를 계산합니다.

주의해야 할 사항:


여기 제법의 정정 방식을 주의하세요. 부동점수의 결과를 먼저 계산한 다음에 정정해야 합니다int(op[-2]*1.0 / op[-1]*1.0)
 1 class Solution:

 2     # @param tokens, a list of string

 3     # @return an integer

 4     def evalRPN(self, tokens):

 5         ops = ['+','-','*','/']

 6         l = len(tokens)

 7         op = []

 8         for i in range(l):

 9             if tokens[i] == '+':

10                 t = op[-1] + op[-2]

11                 op.pop()

12                 op.pop()

13                 op.append(t)

14             elif tokens[i] == '-':

15                 t = op[-2] - op[-1]

16                 op.pop()

17                 op.pop()

18                 op.append(t)

19             elif tokens[i] == '*':

20                 t = op[-1] * op[-2]

21                 op.pop()

22                 op.pop()

23                 op.append(t)

24             elif tokens[i] == '/':

25                 t = int(op[-2]*1.0 / op[-1]*1.0)

26                 op.pop()

27                 op.pop()

28                 op.append(t)

29             else:

30                 op.append(int(tokens[i]))

31         return op[-1]

32         

33 def main():

34     s = Solution()

35     print s.evalRPN(["10","6","9","3","+","-11","*","/","*","17","+","5","+"])

36     

37 if __name__ == '__main__':

38     main()

좋은 웹페이지 즐겨찾기