描述
字符串s
,只包含 a-z A-Z + - ;
合法的整数包括
1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102
2)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023
输入描述:
包含数字的字符串
输出描述:
所有整数的最小和
示例1
输入: bb1234aa
输出:10
示例2
输入:bb12-34aa
输出:-31
说明:1+2+(-34) = -31
解题思路
- 首先,通过
input()
函数获取用户输入的字符串,并将其赋值给变量s
。 - 计算字符串的长度,并将其赋值给变量
length
。 - 创建一个空列表
num
,用于存储提取到的数字。 - 初始化一个变量
i
为0,作为字符串遍历的索引。 - 使用
while
循环遍历字符串中的每个字符:- 如果当前字符是数字,将其转换为整数并添加到
num_l
列表中,然后将i
加1,继续处理下一个字符。 - 如果当前字符是负号(“-”),将其添加到
stage
字符串中,然后将i
加1,继续处理下一个字符。- 在这个阶段,使用
for
循环遍历从当前索引i
开始的剩余字符,直到遇到非数字字符为止。将遇到的数字字符添加到stage
字符串中,并将i
加1。 - 将
stage
字符串转换为整数,并将其添加到num_l
列表中。
- 在这个阶段,使用
- 如果当前字符既不是数字也不是负号,将
i
加1,继续处理下一个字符。
- 如果当前字符是数字,将其转换为整数并添加到
- 初始化一个变量
sum_num
为0,用于存储数字之和。 - 使用
for
循环遍历num
列表中的每个数字,将其累加到sum_num
中。 - 最后,输出
sum_num
的值,即提取到的数字之和。
s = input()
length = len(s)
num = []
i = 0
stage = ""while i < length:if s[i].isdigit():num.append(int(s[i]))i += 1elif s[i] == "-":stage += s[i]i += 1for j in range(i, length):if s[j].isdigit():stage += s[j]i += 1else:breaknum.append(int(stage))stage = ""else:i += 1sum_num = 0
for i in num:sum_num += iprint(sum_num)