anagram 变位词题目一则

anagram 变位词题目一则

转载请注明出处:https://blog.csdn.net/jpch89/article/details/85063226


1. 题目

Given an array of strings, return an array of strings that groups all anagrams.
An anagram is a word that has the same letters, but in different positions.
i.e. given ["cars", "thing", "scar", "dog", "god", "arcs", "the"]
return [["cars", "scar", "arcs"], ["thing"], ["dog", "god"], ["the"]]


2. 思路

对每个单词的所有字母进行排序,得到的值可以作为字典的键。
比如 scarcars 得到的键是 acrs
与键对应的值是一个列表,存储原单词。
返回这个字典的值组成的列表即可。

补充
还有一种判断两个词是否是同位词的方法是:转化成列表,然后 remove


3. 实现

def find_anagrams(words):
    words_pair = zip(words, [str(sorted(w)) for w in words])
    res_dict = {}
    for i, j in words_pair:
        res_dict.setdefault(j, [])
        res_dict[j].append(i)
    return list(res_dict.values())


words = ['cars', 'thing', 'scar', 'dog', 'god', 'arcs', 'the']
res = find_anagrams(words)
print(res)

"""
[['cars', 'scar', 'arcs'], ['thing'], ['dog', 'god'], ['the']]
"""


完成于 2018.12.18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值