一、乱序字符串
题目内容:
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
样例
对于字符串数组 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]
求解
小坑:刚开始看题意以为里面只有一组乱序字符串,实际上可能有多组。
求解思路:
1、先创建一个空的默认字典,默认值是空列表
2、遍历数组,将每个数值排序后,作为键,本身的值作为值。
3、循环字典,当列表长度大于1,增加到返回列表
坑:字符串用排序函数后返回的是列表!
相关知识:默认字典的使用
代码如下:
def get_list(l):
from collections import defaultdict
d = defaultdict(list)
for i in l:
k = ''.join(sorted(i))
d[k].append(i)
return [j for k in d for j in d[k] if len(d[k]) > 1]