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