题解 | #表示数字#

表示数字

https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6

# 解题思路:
# 1、迭代字符串,每次迭代出一个完整的数字后保存起来
# 2、使用*对第一步得到的数字格式化
# 3、重复步骤1,2格式化所有数字
# 4、特殊处理最后一个字符如果也是数字的情况


s = input().strip()

def format_string(chars):
    result = [] # 存储最终结果
    number_buffer = []  # 暂存数字
    number_flag = False     # 标记当前字符是否是数字

    for char in chars:
        # 当遇到数字
        if char.isdigit():
            number_buffer.append(char)
            number_flag = True
        else:   # 遇到字母的时候,先把前面暂存的数字格式化并保存到结果中,然后追加当前的字母。
            if number_flag:
                result.append('*' + ''.join(number_buffer) + '*')
                number_buffer = []  # 重置数字缓存区
                number_flag = False
            result.append(char) 
            # ['J', 'k', 'd', 'i', '*234*', 'k', 'l', 'o', 'w', 'e', '*90*','a', '*3*']

            
    # 处理最后一个字符,最后一个字符是数字的时候number_buffer不为空,需要追加到result
    if number_flag:
        result.append('*' + ''.join(number_buffer) + '*') 
    
    return result


if __name__ == '__main__':
    result = format_string(s)
    print(''.join(result))

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务