lintCode字符串处理

一、乱序字符串

题目内容:

给出一个字符串数组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]

猜你喜欢

转载自www.cnblogs.com/linshuhui/p/9855297.html
今日推荐