arrays - 算法 - 检查字符串数组中的任何字符串是否是同一数组中任何其他字符串的前缀

标签 arrays string algorithm

我想检查字符串数组中的任何字符串是否是同一数组中任何其他字符串的前缀。我正在考虑基数排序,然后单遍遍历数组。

谁有更好的主意?

最佳答案

我认为,基数排序可以修改为动态检索前缀。我们所要做的就是按首字母对行进行排序,并在每个单元格中存储没有首字母的副本。然后,如果单元格包含空行,则该行对应于前缀。如果单元格仅包含一个条目,那么当然其中不可能有线路前缀。

这里,这可能比我的英语更干净:

lines = [
"qwerty",
"qwe",
"asddsa",
"zxcvb",
"zxcvbn",
"zxcvbnm"
]

line_lines = [(line, line) for line in lines]

def find_sub(line_lines):
    cells = [ [] for i in range(26)]
    for (ine, line) in line_lines:
        if ine == "":
            print line
        else:
            index = ord(ine[0]) - ord('a')
            cells[index] += [( ine[1:], line )]
    for cell in cells:
        if len(cell) > 1:
            find_sub( cell )

find_sub(line_lines)

关于arrays - 算法 - 检查字符串数组中的任何字符串是否是同一数组中任何其他字符串的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437327/

相关文章:

java - 在 Eclipse (Java) 中使用 Unicode 符号的奇怪打印行为

algorithm - 循环查找算法

c# - 有约束的计划

string - 检查数字中的数字是否可以重新排列以形成斐波那契数

java - 不带双引号的字符串追加

javascript - 用于生成动画效果序列的算法

c++ ifstream读取无法存储到短数组缓冲区中

java - 如果数组中没有值,则出现空点异常

ios - 如何在 Swift3 中使用分隔符连接 NSMutableArray 的对象

c++ - 句子编辑 C++