题解 | #表示数字#
表示数字
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))

