华为字符串题目

做了一道华为社招的题目,供大家参考:
题目:给定一个字符串,其中包含数字、大小写字母以及-号,求其中整数数字的最小和

例子 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
全部评论

相关推荐

09-22 15:45
门头沟学院 Java
谁给娃offer我给...:我也遇到了,我说只要我通过面试我就去,实际上我根本就不会去😁
点赞 评论 收藏
分享
10-10 16:30
济宁学院 Java
一表renzha:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务