【发布时间】:2015-03-02 14:41:27
【问题描述】:
我试图通过查找它们的线性表示来匹配 Python 中的符号 "necklaces",为此我使用普通字符串。例如,"AABC"、"ABCA"、"BCAA"、"CAAB" 等字符串都代表同一条项链(如图)。
为了获得概览,我只存储给定项链的 一个 等效字符串作为“代表”。至于检查我是否存储了一条候选项链,我需要一个函数来规范任何给定的字符串表示。作为一种伪代码,我用 Python 写了一个函数:
import collections
def normalized(s):
q = collections.deque(s)
l = list()
l.append(''.join(q))
for i in range(len(s)-1):
q.rotate(1)
l.append(''.join(q))
l.sort()
return l[0]
对于上面示例项链中的所有字符串表示,此函数返回"AABC",它按字母顺序排在第一位。
由于我对 Python 比较陌生,我想知道 - 如果我开始在 Python 中实现一个应用程序 - 这个函数对于生产代码来说是否已经“足够好”了?换句话说:有经验的 Python 程序员会使用这个函数,还是有明显的缺陷?
【问题讨论】:
-
the patterns [abc] [bca] [cab] should all being considered identical好的,但是您的程序返回一个字符串...这是为什么呢? -
我没明白你的意思?
-
对不起,这确实有点混乱。我希望,现在好多了。
-
“python 程序员将如何解决这个问题?” - 既然你已经编写了一个 Python 程序来解决这个问题,你还没有回答自己的问题吗?如果您想查看您的代码,请考虑codereview.stackexchange.com
-
@Wolf 性能改进相关问题通常是代码审查的主题。
标签: python combinatorics string-comparison string-matching