在我的C应用程序中,我有一个字符串,我想与我的应用程序中的字符串列表进行比较。字符串列表可以在我的C应用程序中进行硬编码。
答案 0 :(得分:6)
我追求效率,你应该使用trie,它会给你O(|S|)
个搜索时间,使你的输入字符串与给定的一组字符串相匹配。 [其中| S |是输入字符串的长度]
如果您正在进行快速编码,只需将字符串存储在预定义的char*[]
中,然后使用strcmp()
答案 1 :(得分:0)
“将字符串与字符串列表进行比较”是什么意思?两者是不同类型的“对象”,它们没有明显的可比性。
字符串"372"
如何与字符串列表{ "12, "42", "-11", "372" }
进行比较?
如果您的意思是“在字符串列表中查找字符串”,那么最好的选择是对列表进行排序,然后使用二进制搜索来快速检查候选者是否存在。
字符串列表很容易在C中表示为字符指针数组char *strings[]
。您可以使用qsort()
进行排序,并使用bsearch()
进行搜索。
答案 2 :(得分:0)
如果你想要超速,并且你愿意使用额外的工具,你可以考虑gperf。给定一个字符串列表,它可以根据哈希函数进行非常快速的包含测试,并为其提供C代码。