代码之家  ›  专栏  ›  技术社区  ›  Javed Akram

在C中的字符串列表中搜索混乱的字符串#

  •  0
  • Javed Akram  · 技术社区  · 14 年前

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

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

    我希望结果是 “帕斯卡” 如果没有找到,也给 对不起,找不到

    更新时间:

    • 这不是家庭作业
    • 列表大约有1000个单词,所以不容易对每个单词进行排序
    5 回复  |  直到 11 年前
        1
  •  4
  •   3Dave    14 年前

    好吧,一种方法是:

    1. 创建数组的副本
    2. 按字母顺序对每个字符串排序
    3. 按字母顺序排列搜索词
    4. 在复制的数组中查找与已排序搜索词匹配的元素的索引
    5. 如果匹配,则从原始(未排序)数组返回相应的元素。
    6. 如果不匹配,继续搜索。

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

    更新

    正如保罗建议的那样,如果只对字符数与搜索项相同的字符串进行排序,那么这样做会更好。

        2
  •  2
  •   The Archetypal Paul    14 年前

    闻起来像家庭作业

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

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

    编辑:如果你真的不想排序,

    计算findtext中每个字母的数量。

    • 遍历单词表
    • 每一个字,
      • 如果与单词表的长度相同
      • 复制findtext的频率表
      • 重复单词表中的单词
      • 对于找到的每个字符,如果不是零,则递减频率表中的数字。
      • 如果你匹配所有的字母并以0结尾,你就有了匹配。
        3
  •  1
  •   Erik Noren    14 年前

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

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

    比较排序后的字符串是否相等,如果不匹配则返回NotFound。

        4
  •  0
  •   David    14 年前

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

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

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

        5
  •  0
  •   arun2808    11 年前
    1. 列出那些长度等于给定字符串长度的字符串。
    2. 从这些过滤列表中,检查每个字符串与给定字符串的ASCII值之和。
    3. 第三个和最后一个现在匹配过滤列表中的字符,您将得到混乱的字符串。