当前位置: 首页 > 面试题库 >

查找一组字母可以创建哪些单词?

姬英耀
2023-03-14
问题内容

我正在尝试编写一些SQL,该SQL将接受一组字母并返回它可能产生的所有可能的单词。我首先想到的是创建一个基本的三表数据库,如下所示:

Words -- contains 200k words in real life
------
1 | act
2 | cat

Letters -- contains the whole alphabet in real life
--------
1  | a
3  | c
20 | t

WordLetters --First column is the WordId and the second column is the LetterId
------------
1  | 1
1  | 3
1  | 20
2  | 3
2  | 1
2  | 20

但是,我对如何编写查询以返回传入的每个字母返回在WordLetters中具有条目的单词的查询有些犹豫。它还需要考虑包含两个相同字母的单词。我从此查询开始,但显然不起作用:

SELECT DISTINCT w.Word 
FROM Words w
INNER JOIN WordLetters wl
ON wl.LetterId = 20 AND wl.LetterId = 3 AND wl.LetterId = 1

如何编写查询以仅返回包含所有传入字母并说明重复字母的单词?

其他资讯:

我的Word表包含将近200,000个单词,这就是为什么我尝试在数据库端而不是在代码端这样做。如果有人在乎,我正在使用enable1单词列表。


问题答案:

暂时忽略问题的SQL部分,我将使用的算法非常简单:首先从字典中的每个单词开始,然后生成带有字母顺序排列的版本以及指向后的指针改为该单词的原始版本。

这将为表提供类似以下内容的条目:

sorted_text word_id
act         123    /* we'll assume `act` was word number 123 in the original list */
act         321    /* we'll assume 'cat' was word number 321 in the original list */

然后,当我们收到输入信息(例如“ tac”)时,我们将其排序,在与原始单词表连接的已排序字母表中查找它,从而为我们提供了可以从中创建的单词列表该输入。

如果
是这样做,我不得不为表中的SQL数据库,但可能用别的东西来预处理单词列表到排序的形式。同样,我可能会将用户输入的字母与创建前端所用的内容进行排序,因此将剩下SQL来完成其擅长的工作:关系数据库管理。



 类似资料:
  • 我有这段简单的代码,我希望从控制台日志记录代码的预期结果是。但我在实现所需的消息时遇到了问题。这是我的代码

  • 谷歌(遗憾地)计划破坏存储权限,使应用程序无法使用标准文件API(和文件路径)访问文件系统。许多人反对它,因为它改变了应用程序访问存储的方式,在很多方面,它是一个受限的API。 因此,如果我们希望处理各种存储卷并访问其中的所有文件,我们将需要在未来的Android版本上完全使用SAF(存储访问框架)(在Android Q上,我们至少可以暂时使用一个标志来使用正常的存储权限)。 例如,假设您想创建一

  • 本文向大家介绍cookie有哪些字段可以设置相关面试题,主要包含被问及cookie有哪些字段可以设置时的应答技巧和注意事项,需要的朋友参考一下 参考回答: name字段为一个cookie的名称。 value字段为一个cookie的值。 domain字段为可以访问此cookie的域名。 非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不

  • 本文向大家介绍程序查找可以由python中给定字母形成的最长单词的长度,包括了程序查找可以由python中给定字母形成的最长单词的长度的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个单词列表和一个称为字母的字符串,我们必须找到可以通过重新排列给定字母而得到的最长单词的大小。字母中可能有星号(*),它可以匹配任何字符。并且没有必要使用所有字母。 因此,如果输入像单词= [“ prince”,

  • 问题内容: 我正在开发的游戏目前需要让人们以自己的名字参加高分榜。我对如何处理按键有些陌生,但是我只在寻找特定按键。是否有一种简单的方法可以使按下任何键的字母而无需执行以下操作: 尽管这行得通,但我觉得有一种更有效的解决方法。我只是无法弄清楚或找到任何指导。 问题答案: 基本上有两种方法: 选项1: 使用。 就这么简单 使用的好处是,仅当0的值介于255和255之间(包括0和255)时,该方法才有

  • 基于当前的实现,我将从某个来源获得一个数组列表,其中包含大约1000个按字母排序的唯一名称(A-Z或Z-A)。 我需要找到以给定字母表开头的第一个单词的索引。 因此,更准确地说,当我选择一个字母表,例如“M”时,它应该给我排序列表中以“M”开头的单词第一次出现的索引。 这样我就可以找到26个字母中每个字母开头的所有单词的索引。 请帮我找到一个不影响速度的解决方案。 更新时间: 实际上,在获得100