查找最短的唯一子字符串 - python

我有一个名字和一个名字列表。我可以保证所选名称包含在其他名称列表中。

我想生成所选名称的最短子字符串,该子字符串仅包含该名称,而不包含数据中的任何其他名称。

>>> names = ['smith','jones','williams','brown','wilson','taylor','johnson','white','martin','anderson']
>>> find_substring('smith', names)
"sm"
>>> find_substring('williams', names)
"ll"
>>> find_substring('taylor', names)
"y"

我可以很容易地通过选择名称的第一个字母并查看它是否与任何名称匹配,然后依次遍历其余字母,然后是成对的字母,来进行暴力破解。

我的问题是我的清单中包含一万多个名称,而且名称相当长-更类似于书名。蛮力将永远存在。

有一些简单的方法可以有效地实现这一目标吗?

参考方案

我相信您最好的选择是蛮力,但是,请保留一个字典,其中包含已检查的字母组合以及它们是否与任何其他名称匹配。

["s":true, "m": true, "sm": false"]

首先查阅此列表将有助于减少针对其他字符串进行检查的代码,并加快该方法的运行速度。

python JSON对象必须是str,bytes或bytearray,而不是'dict - python

在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

Python 3运算符>>打印到文件 - python

我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if not nmake: depend = open(".depend", "a") dependmak = open(".depend.mak&#…

Python:使用两个列表进行字典 - python

如何使用python使用两个列表作为字典list_one_keys = ['key1', 'key2', 'key3', 'key4'] 嵌套列表:list_two_values = [['a1var1', 'a1var2', '…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…