题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
s1 = input()
'''
数字的位置有6种情况
情况0:开始位,例中的2和9是这种情况,判断方法:第1个元素必然属于情况0,
情况1:中间位,例中的3是这种情况
情况2:终止位,例中的4和0是这种情况
情况3:单独数字,例中的3是这种情况
情况4:第一位整数,必然要在之前插入
情况5:最后一位整数。必然要在之后插入
使用insert插入"*"时,不同的情况,插入的索引不同
情况0:插入索引和数字索引一样
情况1:不插入
情况2:插入索引再原数字索引上+1
情况3:需要插入两次,第一次插入原数字索引,第二次插入原数字索引+1
情况4:插入索引和数字索引一样
情况5:插入索引再原数字索引上+1
插入:为保证插入后不影响索引位置,需要先去重,然后从大索引到小索引的顺序插入
'''
# 先或取整数的索引
number_index = []
str_list = []
for index, value in enumerate(s1):
str_list.append(value)
if value.isdigit():
number_index.append(index)
# 判断每个整数分别属于哪种情况
insert_index = []
if len(number_index) > 0:
# 情况4,第1个整数
insert_index.append(number_index[0])
# 情况5,最后1个整数
insert_index.append(number_index[-1]+1)
for i in range(1, len(number_index) - 1):
# 情况0:1、第一个元素。2、满足number_index[i] - number_index[i - 1] != 1 and number_index[i + 1] - number_index[i] == 1
if number_index[i] - number_index[i - 1] != 1 and number_index[i + 1] - number_index[i] == 1:
insert_index.append(number_index[i])
# 情况1:满足number_index[i] - number_index[i - 1] == 1 and number_index[i + 1] - number_index[i] = 1
if number_index[i] - number_index[i - 1] == 1 and number_index[i + 1] - number_index[i] == 1:
pass
# 情况2:满足number_index[i] - number_index[i - 1] == 1 and number_index[i + 1] - number_index[i] != 1
if number_index[i] - number_index[i - 1] == 1 and number_index[i + 1] - number_index[i] != 1:
# 注意,情况2的插入索引要在原基础上+1
insert_index.append(number_index[i] + 1)
# 情况3:满足number_index[i] - number_index[i - 1] != 1 and number_index[i + 1] - number_index[i] != 1
if number_index[i] - number_index[i - 1] != 1 and number_index[i + 1] - number_index[i] != 1:
# 注意,情况3有两个插入索引,一个是原来索引,一个是原来索引+1
insert_index.append(number_index[i]) # 原来索引
insert_index.append(number_index[i] + 1) # 原来索引+1
# 情况3还有一种最后一位数字和第一位的情况,需要单独考虑:
for i in range(-2, -1): # 注意这里的range范围
if number_index[i + 1] - number_index[i] != 1:
insert_index.append(number_index[i + 1]) # 原来索引
insert_index.append(number_index[i + 1] + 1) # 原来索引+1
for i in range(1):
if number_index[i + 1] - number_index[i] != 1:
insert_index.append(number_index[i]) # 原来索引
insert_index.append(number_index[i] + 1) # 原来索引
# 去重然后排序,要按照从后到前的顺序排序
insert_index = list(set(insert_index))
insert_index.sort(reverse=True)
# print(insert_index)
for i in insert_index:
str_list.insert(i, "*")
print("".join(str_list))
