首页 > 解决方案 > 是否有任何伪造的方法可以根据 C# 中的输入字符为我提供美国的城市名称?

问题描述

我正在处理一些测试场景,我想要一个将字符作为输入并返回美国城市名称的方法,从该字符随机开始?是否有任何可用的伪造方法,任何 C# 库?

谢谢

标签: c#faker

解决方案


你需要两件事:

  • 美国城市名称列表。
  • 一种称为“前缀树”或“trie”(发音为“try”)的数据结构。

前缀 trie 将您正在做的事情(查找与第一个字母匹配的内容)概括为任意长的前缀(查找与前“n”个字符匹配的内容)。

Trie 将允许您输入“Sea”并查看“Seattle”和“Seatac”等名称。

您可以从美国人口普查局找到城市列表。我没有链接,但如果你搜索一下,你可以找到一个。您可能必须处理数据才能获得所需的数据。

这里有一些关于尝试的数据:

https://en.wikipedia.org/wiki/Trie

但是,如果您在 Google 上搜索 Trie 或 Trie C#,您可以找到现有资源。

话虽这么说...如果您只需要您提到的确切问题(输入一个字母,返回一个随机匹配),您可以构建一个数组数组,然后从城市列表中填充它。

但是......在大多数用例中,特里树更有用。

我会说...了解尝试,它们是一种很酷的数据结构。

然后,如果你真的只需要你提到的,只需做一个数组数组(第一个数组按字母索引,第二个数组是字符串列表)。

但是学习尝试是完全值得你花时间的。

如果您真的想深入研究...尝试能够回答以下问题:

  1. 渐近地,在 trie 中查找项目与在以字符串为键的哈希表中查找项目相比如何?

  2. 实际上,这两者有何不同,为什么?

第 1 项要求对算法有一个不错的理解。

第 2 项需要深入了解计算机体系结构。

无论如何......当人们说“这不是一个可以在这里回答的问题”时忽略他们......

这实际上是一个问题,如果你坚持下去,可以教你很多关于计算机如何工作的知识。虽然它看起来简单而奇怪,表面上“好像不是一个真正的问题”。

所以......这是你问题的哲学答案。

确切问题的具体答案是:

  1. 获取美国城市列表。
  2. 填充数组数组。使用 cityName[0] - 'a' 作为外部数组的索引。
  3. 获取内部数组(从上面),并获取一个随机索引。

但这是愚蠢的答案......去了解尝试。

打蜡……打蜡


推荐阅读