题解 | #字符统计#
字符统计
https://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0
不是最简单的方法,利用list set的转换,count方法,sort方法。可以得到以下的方法:
import sys str = input() char_list = list(set(str))#元素表 count_list = [] for i in range(len(char_list)): count_list.append(str.count(char_list[i])) #完成数量计数 count_list_sorted = list(set(count_list))#不重复的数量排序 count_list_sorted.sort(reverse=True)#不重复的数量排序,逆序 char_usual = [] for i in range(len(count_list_sorted)): if count_list.count(count_list_sorted[i]) == 1:#遍历大到小数量,如果个数为1,则输出对应符号 for j in range(len(char_list)): if count_list[j] == count_list_sorted[i]: print(char_list[j],end='') else: for j in range(len(char_list)): #如果个数不唯一,利用临时数组,对应个数的符号进行append,之后排序符号组,正序输出 if count_list[j] == count_list_sorted[i]: char_usual.append(char_list[j]) char_usual.sort() #正序,sort()会改变原有的list,临时list用完要clear print(''.join(char_usual),end='') char_usual.clear()
看到一个很好的方法:
s = input() l = [] for i in set(s): l.append((i,s.count(i))) l.sort(key=lambda x:(-x[1],x[0])) for i in l: print(i[0],end="")