华为字符串题目
做了一道华为社招的题目,供大家参考:
题目:给定一个字符串,其中包含数字、大小写字母以及-号,求其中整数数字的最小和
例子 bb1234aa34 最小和:17
bb1234aa-34 最小和:-24
题意说明:字符只能和其旁边的字符进行组合
题解:数字字符前面没有-的每一个当作一个数, 数字前面有-的,-号后面连续的几个当作一个数
基于python3的环境
def helper(n):
num=0
while(len(n)>0):
c = n.pop(0)
if c.isdigit():
num = num*10+int(c)
elif c.isalpha():
n.insert(0,c)
return num, n
elif c == '-':
n.insert(0, c)
return num, n
return num, n
while True:
try:
s1=input()
m = list(s1)
sum = 0
while len(m) > 0:
c = m.pop(0)
if c.isdigit():#当没有-号时,为数字字符直接相加
sum = sum + int(c)
elif c == '-': 当输入为-号时,查看-后续的字符是否为数字字符,是数字字符进行整合,不是返回,处理下个字符
num, s = helper(m)
sum = sum - num
m = s
print(sum)
except:
break
查看19道真题和解析