题目描述
- 字符串 s,只包含
a-z,A-Z,+-
; - 合法的整数包括
1) 正整数 一个或者多个0-9
组成,如 0 2 3 002 102
2)负整数 负号 -
开头,数字部分由一个或者多个0-9
组成,如 -0 -012 -23 -00023
输入描述
包含数字的字符串
输出描述
所有整数的最小和
示例一
输入
bb1234aa
输出
10
说明
示例二
输入
bb12-34aa
输出
-31
解题思路
贪心地思考问题:为了使得和尽可能地小,当
- 遇到正数,我们逐个数字相加,譬如遇到
"123"
,不应该当作数字123
来使用,而是应该当作三个数字1
、2
、3
来相加。 - 遇到负数,我们对整个负数进行整体地考虑。
s=input()
stack=['0']
for ch in s:
if ch=='-':
stack.append(ch)
elif ch.isdigit():
if stack[-1].startswith('-'):
stack.append(stack.pop()+ch)
else:
stack.append(ch)
ans=sum([int(num) for num in stack])
print(ans)