当前位置: 首页 > 知识库问答 >
问题:

查找是否可以从字符矩阵中获得字符串

韩捷
2023-03-14
o f a s
l l q w
z o w k 

我能想到的唯一方法是一个回溯算法,它搜索这个词是否可能。有没有其他更快的算法来解决这个问题?

假设我有很多查询(关于查找一个单词是否存在)。那么是否可以做一些预处理来更快地回答查询呢?

共有1个答案

景令秋
2023-03-14

您可以使用DFS解决这个问题。让我们为这个问题定义一个图。图的顶点将由矩阵的单元和我们正在搜索的字符串的前缀长度的组合的单元组成。当我们在一个给定的顶点,这将意味着指定前缀的所有字符都匹配到目前为止,我们目前在给定的单元格。

我们将边定义为连接与边相邻的单元格并执行“有效”事务。也就是说,我们要搜索的单元格应该是我们正在搜索的字符串中的下一个单元格。

为了解决这个问题,我们对所有包含字符串的第一个字母和前缀长度1(意味着我们匹配了第一个字母)的单元格进行DFS。从那以后,我们继续搜索,在每一步中,我们计算哪些是离开当前位置的边(单元格/字符串前缀长度组合)。第一次到达长度为L-字符串长度的前缀时终止。

 类似资料:
  • 我有两个字符串,string1和string2。我想检查string1是否可以由string2中的字符组成(没有重复字符)。例如,如果string1是“工具”,string2是“环礁”,函数将返回false。如果string1是“触摸”,string2是“chetoudce”,它将返回true。 在Javascript中最有效的方法是什么?我在考虑使用indexOf,然后从string2中删除用来

  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 问题内容: 我有这样的数据: 我期望的输出是 我想在SQL中实现它。 问题答案: 首先创建这个 现在使用 as SQL字段 我希望这可以解决您的问题。

  • 问题内容: 好吧,假设我有一个用{“ tube”,“ are”,“fun”}填充的数组,然后我有一个JTextField,如果我键入其中一个命令来执行某项操作,或者如果输入的不是这样,则会显示一条消息,说“没有找到指令”。 我尝试查看Java文档,但是得到的只是我不想要的东西,例如问题和东西……所以,这是怎么做的?我知道有一个“数组中的”功能,但是我不能很好地将两者结合在一起。 谢谢。 这是我到目

  • 问题内容: 我必须转换一个传递查询的MSSQL存储过程: 这不起作用。我敢肯定,而不是MySQL的命令,但也不管用。 有谁知道是否有可能为MySQL提供类似JavaScript的功能? 问题答案: EXECUTE是MySQL中的有效命令。MySQL参考手册