完整的题目不能复述了,概括一下题目就是输入一个16进制后缀表达式(string型),输出其结果(int型)。
不需要考虑异常情况(即测试用例一定是正确的表达式),不需要考虑优先级。
因为python用的比较顺手,就拿python写了:
def postfixCalc(str):
PStack=[]
NumMap ={'a':10,'b':11,'c':12,'d':13,'e':14,'f':15}
for i in range(0,len(str)):
if '+' == str[i]:
n1 = PStack.pop()
n2 = PStack.pop()
PStack.append(int(n1)+int(n2))
elif '-' == str[i]:
n1 = PStack.pop()
n2 = PStack.pop()
PStack.append(int(n2)-int(n1))
elif '*' == str[i]:
n1 = PStack.pop()
n2 = PStack.pop()
PStack.append(int(n1)*int(n2))
else:
if str[i]<='9' and str[i]>='0':
PStack.append(int(str[i]))
else:
PStack.append(NumMap[str[i].lower()])
return PStack[0]
def main():
str = raw_input()
print postfixCalc(str)
if __name__ == '__main__':
main()