C# 在C语言的字符串列表中搜索一个混乱的字符串#
我正在使用.NET2.0C# 在C语言的字符串列表中搜索一个混乱的字符串#,c#,.net,string,search,C#,.net,String,Search,我正在使用.NET2.0 我想在字符串列表中搜索一个混乱的字符串 string[] wordList = new string[] { "java", "csharp", "fortran", "cobol", "pascal", "perl", "flash" }; string findText = "spclaa"; // do stuff 我希望结果为“pascal” 此外,如果未找到,请给出“抱歉,未找到” 更新: 这不是家庭作业 这个列表大约有1000个单词,所以对每个单词
我想在字符串列表中搜索一个混乱的字符串
string[] wordList = new string[] { "java", "csharp", "fortran", "cobol", "pascal", "perl", "flash" };
string findText = "spclaa";
// do stuff
我希望结果为“pascal”
此外,如果未找到,请给出“抱歉,未找到”
更新:
- 这不是家庭作业
- 这个列表大约有1000个单词,所以对每个单词进行排序并不容易
- 创建阵列的副本
- 按字母顺序对每个字符串排序
- 按字母顺序对搜索词进行排序
- 在复制的数组中查找与排序的搜索项匹配的元素的索引
- 如果匹配,则从原始(未排序)数组返回相应的元素
- 如果不匹配,继续搜索
- 遍历单词列表
- 每一个字,
- 如果它的长度与wordList相同
- 复制findtext的频率表
- 反复浏览单词列表中的单词
- 对于找到的每个字符,如果不是零,则减少频率表中的数字
- 如果您匹配所有字母并以所有零结尾,则您有一个匹配项
- 好吧,一种方法是:
值得注意的是,两个单词可能具有相同的字符内容,但不相等。例如,“neo”和“one”有相同的字符,但显然不是同一个词 更新 正如Paul所建议的,如果您只对与搜索词具有相同字符数的字符串进行排序,这将执行得更好。闻起来像是家庭作业 对findText中的字符进行排序。 对wordList中每个单词的字符进行排序,并创建一个新列表。 将已排序的findText与每个已排序的单词进行比较。 如果找到匹配项,请在原始单词列表的同一索引中查找该单词 (在比较之前,您可能会对单词列表中的单词进行排序) 编辑:如果你真的不想对它们进行排序 计算findText中每个字母的数量
java becomes aajv
csharp becomes achprs
pascal becomes aaclps
scplaa becomes aaclps
比较排序的字符串是否相等,如果没有匹配项,则返回not found。1.筛选数组列表,如搜索字符串长度等于数组列表元素 2.比较数组列表元素中的每个字符。如果找到增量计数并删除该字符数组列表元素 3.如果计数等于搜索字符串而不是打印数组元素,则未找到元素
如果这不是家庭作业,我不知道什么是…你想要部分匹配还是精确匹配?重复匹配的可能性如何?如果你想了解拼字游戏解算器的工作原理,可以通过类似的方式使用字典词源、检查长度等@Joel,精确匹配,如果重复所有单词1000个单词都不算什么。对它们进行排序:)我有1000个单词的列表,那么如何对每个字符串进行排序。就像对一个字符串进行排序一样,只有1000次(换句话说,为什么有1000个字符串会改变任何事情?@Paul yep。看起来我们是在同一时间发布的。“值得注意的是,两个单词可能具有相同的字符内容,但并不相等。例如,“neo”和“one”具有相同的字符,但显然不是同一个单词。”。实际上这不是问题,因为原始字符串是混乱的,所以不可能知道程序查找的单词是否正确。所以说它们不相等是不正确的,在这种搜索中它们是相等的。@AS-CII是的,很明显。这就是为什么它“值得注意”,而不是包含在算法中。