本人有几个数组,做多项有10万的,最少项有2千的。
比如:
arr[0]="阿里巴巴";
arr[1]="阿理妈妈";
arr[2]="阿力姐姐";
arr[3]="阿离奶奶";
arr[4]="阿李爷爷";
arr[5]="阿利伯伯";
arr[6]="阿立妹妹";
...
...
...
arr[101112]="阿丽哥哥";
arr[101113]="阿哩弟弟";
...需要给这个函数写一个接口:string GetLikeStr(string temps),输入"阿%"的话,返回任意字符分割的相似与“阿”的100条内容。关键是速度块一些,反正大于50MS就好了,任何算法都可以!!!谢谢大家!
比如:
arr[0]="阿里巴巴";
arr[1]="阿理妈妈";
arr[2]="阿力姐姐";
arr[3]="阿离奶奶";
arr[4]="阿李爷爷";
arr[5]="阿利伯伯";
arr[6]="阿立妹妹";
...
...
...
arr[101112]="阿丽哥哥";
arr[101113]="阿哩弟弟";
...需要给这个函数写一个接口:string GetLikeStr(string temps),输入"阿%"的话,返回任意字符分割的相似与“阿”的100条内容。关键是速度块一些,反正大于50MS就好了,任何算法都可以!!!谢谢大家!
如果是%xx%, 应该要全部遍历.
你需要一个hashtable或者别的数据结构来做数据存储,最好是一个树形结构
相当于一个汉字字典的树形结构。这样的话,你的查找速度肯定很快,不过载入速度就不保证了。
比如:
1、先对数组进行排序。。
2、对数组做索引,比如"阿"开头的是从哪个下标开始、"阿里"开头的又是从哪个下标开始、"阿里弟"开头的
3、根据这种策略,查找的时候先在索引里面确定下标范围,应该不需要50ms的
而不是浪费时间费尽心机研究什么算法.有人说这是在内存里的数据,但是你那些数据最初是哪里来的? 难道手工打入不保存到永久介质,掉电就丢?