比较c中的字符串到字符串列表

时间:2012-01-04 09:18:24

标签: c string

在我的C应用程序中,我有一个字符串,我想与我的应用程序中的字符串列表进行比较。字符串列表可以在我的C应用程序中进行硬编码。

  1. 在我的应用程序中定义字符串列表的最佳方法是什么?
  2. 将应用程序中的字符串与字符串列表进行比较的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

我追求效率,你应该使用trie,它会给你O(|S|)个搜索时间,使你的输入字符串与给定的一组字符串相匹配。 [其中| S |是输入字符串的长度]

如果您正在进行快速编码,只需将字符串存储在预定义的char*[]中,然后使用strcmp()

进行迭代

答案 1 :(得分:0)

“将字符串与字符串列表进行比较”是什么意思?两者是不同类型的“对象”,它们没有明显的可比性。

字符串"372"如何与字符串列表{ "12, "42", "-11", "372" }进行比较?

如果您的意思是“在字符串列表中查找字符串”,那么最好的选择是对列表进行排序,然后使用二进制搜索来快速检查候选者是否存在。

字符串列表很容易在C中表示为字符指针数组char *strings[]。您可以使用qsort()进行排序,并使用bsearch()进行搜索。

答案 2 :(得分:0)

如果你想要超速,并且你愿意使用额外的工具,你可以考虑gperf。给定一个字符串列表,它可以根据哈希函数进行非常快速的包含测试,并为其提供C代码。