c# - 是否有任何伪造的方法可以根据 C# 中的输入字符为我提供美国的城市名称?
问题描述
我正在处理一些测试场景,我想要一个将字符作为输入并返回美国城市名称的方法,从该字符随机开始?是否有任何可用的伪造方法,任何 C# 库?
谢谢
解决方案
你需要两件事:
- 美国城市名称列表。
- 一种称为“前缀树”或“trie”(发音为“try”)的数据结构。
前缀 trie 将您正在做的事情(查找与第一个字母匹配的内容)概括为任意长的前缀(查找与前“n”个字符匹配的内容)。
Trie 将允许您输入“Sea”并查看“Seattle”和“Seatac”等名称。
您可以从美国人口普查局找到城市列表。我没有链接,但如果你搜索一下,你可以找到一个。您可能必须处理数据才能获得所需的数据。
这里有一些关于尝试的数据:
https://en.wikipedia.org/wiki/Trie
但是,如果您在 Google 上搜索 Trie 或 Trie C#,您可以找到现有资源。
话虽这么说...如果您只需要您提到的确切问题(输入一个字母,返回一个随机匹配),您可以构建一个数组数组,然后从城市列表中填充它。
但是......在大多数用例中,特里树更有用。
我会说...了解尝试,它们是一种很酷的数据结构。
然后,如果你真的只需要你提到的,只需做一个数组数组(第一个数组按字母索引,第二个数组是字符串列表)。
但是学习尝试是完全值得你花时间的。
如果您真的想深入研究...尝试能够回答以下问题:
渐近地,在 trie 中查找项目与在以字符串为键的哈希表中查找项目相比如何?
实际上,这两者有何不同,为什么?
第 1 项要求对算法有一个不错的理解。
第 2 项需要深入了解计算机体系结构。
无论如何......当人们说“这不是一个可以在这里回答的问题”时忽略他们......
这实际上是一个问题,如果你坚持下去,可以教你很多关于计算机如何工作的知识。虽然它看起来简单而奇怪,表面上“好像不是一个真正的问题”。
所以......这是你问题的哲学答案。
确切问题的具体答案是:
- 获取美国城市列表。
- 填充数组数组。使用 cityName[0] - 'a' 作为外部数组的索引。
- 获取内部数组(从上面),并获取一个随机索引。
但这是愚蠢的答案......去了解尝试。
打蜡……打蜡