题解 | #表示数字#

表示数字

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))

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务