Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言的字符串列表中搜索一个混乱的字符串#_C#_.net_String_Search - Fatal编程技术网

C# 在C语言的字符串列表中搜索一个混乱的字符串#

C# 在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个单词,所以对每个单词

我正在使用.NET2.0
我想在字符串列表中搜索一个混乱的字符串

string[] wordList = new string[] { "java", "csharp", "fortran", "cobol", "pascal", "perl", "flash" };
string findText = "spclaa"; 

// do stuff 
我希望结果为“pascal” 此外,如果未找到,请给出“抱歉,未找到”

更新:

  • 这不是家庭作业
  • 这个列表大约有1000个单词,所以对每个单词进行排序并不容易

    • 好吧,一种方法是:

    • 创建阵列的副本
    • 按字母顺序对每个字符串排序
    • 按字母顺序对搜索词进行排序
    • 在复制的数组中查找与排序的搜索项匹配的元素的索引
    • 如果匹配,则从原始(未排序)数组返回相应的元素
    • 如果不匹配,继续搜索

    • 值得注意的是,两个单词可能具有相同的字符内容,但不相等。例如,“neo”和“one”有相同的字符,但显然不是同一个词

      更新

      正如Paul所建议的,如果您只对与搜索词具有相同字符数的字符串进行排序,这将执行得更好。

      闻起来像是家庭作业

      对findText中的字符进行排序。 对wordList中每个单词的字符进行排序,并创建一个新列表。 将已排序的findText与每个已排序的单词进行比较。 如果找到匹配项,请在原始单词列表的同一索引中查找该单词

      (在比较之前,您可能会对单词列表中的单词进行排序)

      编辑:如果你真的不想对它们进行排序

      计算findText中每个字母的数量

      • 遍历单词列表
      • 每一个字,
        • 如果它的长度与wordList相同
        • 复制findtext的频率表
        • 反复浏览单词列表中的单词
        • 对于找到的每个字符,如果不是零,则减少频率表中的数字
        • 如果您匹配所有字母并以所有零结尾,则您有一个匹配项

      一种方法可能是对每个字符串和比较字符串中的字符进行排序,并以这种方式进行比较

      java becomes aajv
      csharp becomes achprs
      pascal becomes aaclps
      scplaa becomes aaclps
      

      比较排序的字符串是否相等,如果没有匹配项,则返回not found。

      1.筛选数组列表,如搜索字符串长度等于数组列表元素

      2.比较数组列表元素中的每个字符。如果找到增量计数并删除该字符数组列表元素

      3.如果计数等于搜索字符串而不是打印数组元素,则未找到元素

    • 列出长度等于给定字符串长度的字符串
    • 从这些过滤列表中,检查每个字符串与给定字符串的ASCII值之和
    • 第三个和最后一个现在匹配过滤列表中的字符,您将得到混乱的字符串

    • 如果这不是家庭作业,我不知道什么是…你想要部分匹配还是精确匹配?重复匹配的可能性如何?如果你想了解拼字游戏解算器的工作原理,可以通过类似的方式使用字典词源、检查长度等@Joel,精确匹配,如果重复所有单词1000个单词都不算什么。对它们进行排序:)我有1000个单词的列表,那么如何对每个字符串进行排序。就像对一个字符串进行排序一样,只有1000次(换句话说,为什么有1000个字符串会改变任何事情?@Paul yep。看起来我们是在同一时间发布的。“值得注意的是,两个单词可能具有相同的字符内容,但并不相等。例如,“neo”和“one”具有相同的字符,但显然不是同一个单词。”。实际上这不是问题,因为原始字符串是混乱的,所以不可能知道程序查找的单词是否正确。所以说它们不相等是不正确的,在这种搜索中它们是相等的。@AS-CII是的,很明显。这就是为什么它“值得注意”,而不是包含在算法中。