草庐IT

java - 从单词中删除字符的算法,使得减少的单词仍然是字典中的单词

场景如下,给定一个单词,在每一步中从单词中删除一个字符,这样减少的单词仍然是字典中的单词。继续,直到没有字符为止。重点是:您需要删除正确的字符,例如。在一个单词中,可能有两个可能的字符可以被删除,并且都可能导致减少的单词成为有效单词,但在稍后阶段,一个可能会被减少到最后,即没有留下任何字符,而另一个可能会挂断。例子:星球植物裤子潘一个一个或星球飞机车道不可能进一步,假设lan不是一个词。希望你明白了。请查看我的代码,我正在使用递归,但想知道是否有更高效的解决方案来执行相同的操作。publicclassisMashable{staticvoidinitiate(Strings){mash

c++ - 在一个字符串中搜索另一个字符串的变位词?

我试图从字符串text中找到一个子字符串,它是字符串pattern的变位词。我的问题:可以Rabin-Karpalgorithm为此目的进行调整?还是有更好的算法?我尝试了一种蛮力算法,但在我的案例中不起作用,因为文本和模式每个都可以达到一百万个字符。更新:我听说有一个使用O(1)空间的最坏情况O(n2)算法。有谁知道这个算法是什么?更新2:作为引用,这里是Rabin-Karp算法的伪代码:functionRabinKarp(strings[1..n],stringsub[1..m])hsub:=hash(sub[1..m]);hs:=hash(s[1..m])forifrom1ton

c++ - 在单词列表中查找字谜

我有一个单词列表和一个包含许多字谜的文件。这些字谜是在单词列表中找到的单词。我需要开发一种算法来找到匹配的单词并在输出文件中生成它们。到目前为止,我开发的代码只适用于前两个词。此外,我无法让代码很好地处理其中任何位置包含数字的字符串。请告诉我如何修复代码。#include#include#includeusingnamespacestd;intmain(void){intx=0,y=0;inta=0,b=0;intemptyx,emptyy;intmatch=0;ifstreamf1,f2;ofstreamf3;stringline,line1[1500],line2[50];size

c++ - 给定一个字符串数组,返回所有是变位词的字符串组

给定一个字符串数组,返回所有是变位词的字符串组。我的解决方案:对数组中的每一个字符串单词,排序O(mlgm),m是一个单词的平均长度。建立哈希表。将排序后的词作为key放入哈希表中,同时生成词的所有排列(O(m!)),在字典(前缀树映射)中搜索每个排列,时间复杂度为O(m),如果是在字典中,将(O(1))放入哈希表中,使得所有排列的单词都放入具有相同键的列表中。总的来说,O(n*m*lgm*m!)时间和O(n*m!)空间,n是给定数组的大小。如果m很大,效率不高,m!.有更好的解决方案吗?谢谢 最佳答案 我们定义了一个字母表,其中包

c++ - 从过去的工作面试中检查我的字谜代码

前段时间有以下面试问题,但基本语法太卡了,我没能继续前进(一旦肾上腺素开始发挥作用,编码就会消失。)给定一个字符串列表,返回一个字符串集列表,这些字符串集是输入集的变位词。即“dog”,“god”,“foo”应该返回{“dog”,“god”}。之后,我自己创建了代码作为健全性检查,它已经存在了一段时间。我欢迎就此发表意见,看看我是否遗漏了什么,或者我是否可以更有效地完成它。借此机会提高自己并学习其他技术:voidAnagram::doWork(listinput,list>&output){typedeflist>SortType;SortTypesortedInput;//sorte

ios - 重新排列数组中的字母并检查排列是否在数组中

我正在制作一个ios应用程序,您可以在其中输入9个字母,它会输出这9个字母的变位词。它就像论文中的目标词或9个字母的词。喜欢这个链接:http://nineletterword.tompaton.com/它不仅提供9个字母的字谜,它还会提供4个字母、5个字母、6个字母……所有这些字母都至少包含中间字母。我想让它成为一个离线应用程序,所以我不想引用任何网站或使用在线json...我将如何检查是否可以将9个字母的数组重新排列成我下载的英语词典中的单词。例如我有(a,b,a,n,D,o,n,e,d)的输入:我如何获得数组中4个或更多字母的英语单词的输出称为“英语词典”,其中必须包含中间字母“

php - Mysql 对 Anagram 求解器的多个查询

我有一个名为“字典”的简单但巨大的表,它有2列。身份证和单词。我有一个php字谜算法,可以创建给定单词的所有可能组合。我想检查这个词是否存在于我的字典中,如果存在则显示它。但我必须使用太多查询。例如,一个9个字母的单词是362880种组合。知道如何减少数据库调用吗? 最佳答案 尝试这样的事情:SELECTwordFROMdictionaryWHEREwordLIKE'%a%a%a%'ANDwordLIKE'%n%'ANDwordLIKE'%g%'ANDwordLIKE'%r%'ANDwordLIKE'%m%'ANDCHAR_LENG

php - 查找最长字谜的算法

假设我们有一本包含大约250,000个单词的字典。算法应将12个字母作为数组或字符串,并从字典中找到与最长单词匹配的变体。当然,人们总是可以对其进行暴力破解,但我想知道这样做最优雅的方法是什么?如果不使用任何特定于语言的函数作为主要问题的快捷方式,则使用PHP以外的其他语言的答案也将被接受。注意:单词存储在数据库中,但我可以将它们拉入内存以提高速度。虽然我不确定PHP的索引是否比MySQL数据库更好? 最佳答案 你应该计算每个单词的签名,你只做一次并将它和单词一起保存到你的数据库中。表格应该是这样的:wordvarchar(12),

python - 如何检查两个字符串是否是彼此的字谜?

我正在尝试编写一个接受来自用户的两个字符串的程序:s1=input("Pleaseenteraword:")s2=input("Pleaseenteranotherword:")如果两者是变位词,我如何输出True,否则输出False?如果您从搜索引擎中找到这个问题并希望在列表中查找可能的多个字谜:比较每对元素是可能的,但不是最佳的。请看UsingPython,findanagramsforalistofwords以获得更具体的建议。 最佳答案 为什么不直接对字符串进行排序?>>>sorted('anagram')['a','a',

代码随想录算法训练营第6天 | 哈希表理论基础, 242.有效字母异位词 anagram, 349. 两数组交集, 202. 快乐数, 1.两数之和

哈希知识一些记录:虽然std::set、std::multiset的底层实现是红黑树,不是哈希表,std::set、std::multiset使用红黑树来索引和存储,不过给我们的使用方式,还是哈希法的使用方式,即key和value。所以使用这些数据结构来解决映射问题的方法,我们依然称之为哈希法。map也是一样的道理。哈希法也是牺牲了空间换时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。做面试题目时遇到需判断一个元素是否出现过的场景也应该第一时间想到哈希法#242anagrammultiset和unordered_map都试了下,看代码随想录答案用的array,