相关疑难解决方法(0)

在一组字符串中查找最长的公共起始子字符串

对于一个相对微不足道的问题,提出最优雅的JavaScript,Ruby或其他解决方案是一项挑战.

此问题是最长公共子字符串问题的更具体情况.我只需要在数组中找到最长的公共起始子字符串.这大大简化了问题.

例如,最长的子串[interspecies, interstelar, interstate]是"inters".但是,我不需要找到"ific" [specifics, terrific].

我已经通过快速编写JavaScript解决方案来解决这个问题,作为我关于类似shell的选项卡完成的答案的一部分(这里是测试页面).这是解决方案,略有调整:

function common_substring(data) {
  var i, ch, memo, idx = 0
  do {
    memo = null
    for (i=0; i < data.length; i++) {
      ch = data[i].charAt(idx)
      if (!ch) break
      if (!memo) memo = ch
      else if (ch != memo) break
    }
  } while (i == data.length && idx < data.length && ++idx)

  return (data[0] || '').slice(0, idx)
}
Run Code Online (Sandbox Code Playgroud)

代码在此Gist中提供,以及Ruby中的类似解决方案.您可以将gist克隆为git repo来试用它: …

javascript ruby python haskell longest-prefix

39
推荐指数
6
解决办法
3万
查看次数

标签 统计

haskell ×1

javascript ×1

longest-prefix ×1

python ×1

ruby ×1