题目
http://acm.ecnu.edu.cn/problem/3238/
按字符串中不同字符个数从多到少的顺序进行排序,如果不同字符个数相同,按字符串的字典序排序。
解题思路
简单排序题,字符去重用python的set方法非常简单。
自定义sort方法的排序规则,mycmp函数返回正数表示交换两个数。python中sort()方法自定义
AC代码
#coding=utf-8
def mycmp(x, y): #返回正数表示交换
lenx = len(set(list(x))) #不重复字符个数
leny = len(set(list(y)))
if lenx < leny:
return 1
elif lenx > leny:
return -1
elif x > y:
return 1
elif x < y:
return -1
else:
return 0
kase = int(input())
for t in xrange(kase):
n = int(input())
strset = []
for i in range(n):
s = raw_input()
strset.append(s)
strset.sort(mycmp) #自定义排序规则
print "case #%d:"%t
for s in strset:
print s