gpt4 book ai didi

c - 在 C 中的字符串数组中搜索字符串的有效方法。(不区分大小写)

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:07 27 4
gpt4 key购买 nike

我正在做一个项目(用 C 语言实现),我们需要维护一个功能或关键字列表。用户输入一个字符串。我们需要在存储的字符串数组中对这个字符串进行不区分大小写的搜索。该列表目前包含 100 个字符串,并且可能会添加新的字符串(每年大约 5 个字符串)。

我想知道存储这个数组并使搜索更高效的最佳方式。

目前实现的解决方案如下:(我没有编译这段代码。这只是一个代码片段。)

    char **applist={ asdf , adgh, eftg , egty, ...} 
char *user_input; // this string contains user entered string
int id;
switch(user_input[0])
{
case 'a':
case 'A':
switch(user_input[1]
{
case 's':
case 'S':
id=0
break;

case 'd':
case 'D':
id=1
break;
}
break;
case'e':
case'E':
switch(user_input[1])
{
case 'f':
case 'F':
id=2
break;

case 'g':
case 'G':
id=3
break;
}
break;
}
if(stricmp(user_input,applist[id]))
return id;
else
return -1;

在实际代码中,applist 没有排序。随着新字符串被添加到 applist,我需要一种有效的方法来存储这个数组。

如果我按字母顺序存储字符串,那么每次添加新字符串时,我都必须手动找到新字符串的正确位置。 (新字符串在编译代码之前添加到 applist,而不是在运行时)

建议一种有效的方法。

编辑:我目前的方法导致代码更长但效率更高。但是这段代码并不容易维护。我需要的是一种数据结构,它可以以与此相同的效率进行搜索,但代码更小。您建议的数据结构不应有额外的开销。唯一的要求是高效搜索。以及一种在编译时轻松地将元素添加到数据结构的方法。在运行时排序不是我的要求,因为新字符串是在编译时添加的(这是为了避免限制用户向列表中添加任何新字符串)。

最佳答案

一个好的数据结构可能是 TRIE:

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

看起来这就是您开始在代码中实现的内容。

关于c - 在 C 中的字符串数组中搜索字符串的有效方法。(不区分大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com