题目描述
给定一个由纯数字组成以宇符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。
如"34533”,数字3重复超过2次,需要册除其中一个3,删除第一个3后获得最大数值"4533"。请返回经过删除操作后的最大的数值,以字符串
输入描述
第一行为一个纯数字组成的字符串,长度范围:[1,100000]
输出描述
输出经过删除操作后的最大的数值
示例1
输入
34533
输出
4533
示例2
输入
5445795045
输出
5479504
自己写的不一定完全对,思路如下
将数字拆分成单一数字组成的数组,统计count大于2的元素,并比较当前元素与下个元素,如当前元素小于下一个元素,则删除该元素,否则保留
num = '5445795045' #num = '34533' num_list = [int(i) for i in num] num_index =[] print('number_list:',num_list) for n in range(len(num_list)): var = num_list[n] print('index:',n,'value:',var,'count:',num_list.count(var)) if(num_list.count(var)>2 and n<len(num_list)): print('count>2: index',n,'value:',var,'count:',num_list.count(var)) if(n == len(num_list)-1): if(num_list.count(var)>2): num_list[n] = 'D' print('num_list:',num_list) break if(num_list[n] <num_list[n+1]): print(num_list[n],'<',num_list[n+1],' need remove value index:',n,'value:',var,'count:',num_list.count(var)) num_list[n] = 'D' #num_index.append(n) #del num_list[n] print('num_list:',num_list) else: print(num_list[n],'>=',num_list[n+1],'no action') print('number_list:',num_list) while num_list.count('D')>0: num_list.remove('D') print('number_list remove:',num_list) str_list = [str(i) for i in num_list] result = ''.join(str_list) print('final number_list:',result) #print('number_index:',num_index) #for i in sorted(num_index,reverse=True): # print('remove:',i,num_list[i]) # del num_list[i] #print('result:',num_list)
标签:count,index,Python,OD,list,var,华为,num,print
From: https://www.cnblogs.com/cygwin/p/17899112.html