【问题标题】:Search algorithm required需要搜索算法
【发布时间】:2012-06-22 01:13:12
【问题描述】:

我需要一个 c# 程序(搜索算法),即,当用户键入一个字符时,显示屏应更新以显示下一个字符的所有有效选择以及可能的匹配站列表。

例如:用户输入:D A R T,它应该显示

达特福德和达特茅斯

建议大纲如下:

public class Suggestions
{
     HashSet<Character> nextLetters { get; set; }
     HashSet<String> stations { get; set; }
}

public class StationFinder
{
     private static String[] stations = new String[] {"LIVERPOOL LIME STREET", "BIRMINGHAM 
                                       NEW STREET", "KINGSTON", " DARTFORD", "DARTMOUTH" };

    public Suggestions GetSuggestions( String userInput )
    {
          // TODO Compute result
          Suggestions result = new Suggestions();
          return result;
    }
}

这只是一个建议,也可以修改。

问候, 毗湿奴

【问题讨论】:

  • 老兄,你甚至没有为 .net 标记它,这闻起来像家庭作业

标签: c# algorithm search


【解决方案1】:

我个人不了解 C#,因此无法帮助您编写代码,但您要使用的代码称为 TRIE。这是字符串的一种特定类型的树结构。好的属性是你可以非常看到给定字符串开头的所有合法结尾。这非常适合自动建议等事情,我认为这就是你想要的。只需在 C# 中搜索 TRIE 实现即可

【讨论】:

  • 如果你有像字典这样的庞大的单词列表,试试是很好的;如果您有几千个项目,只需遍历列表/数组并选择具有正确 .StartsWith() 的项目既更容易又足够高效。
  • 我给了 +1,但我用几千和 LINQ 在 0.1 秒内完成了这个。但我要看看TRIE。根据样本,我怀疑这太多了。
  • 感谢您的回复。我可以试试 TRIE 实现。
【解决方案2】:

您想要的是三元搜索树外观 here wikipediahere c# example

【讨论】:

  • 这是一个不错的答案,Wiki 链接还指出可以使用哈希表,这就是我要说的 LOL。 +1
猜你喜欢
  • 2012-10-16
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
相关资源
最近更新 更多