九宫格中联系人字符匹配算法简析

在最近项目中,车载端通过蓝牙向手机请求电话簿信息,并将这些信息保存在本地sqlite3数据库中,用户在车载端可以进行输入,按照用户的输入我们能够匹配出用户的结果。

刚开始由于第一次接触这个项目,所以对于这些问题的理解存在一定的疑问并提出最初的解决方案,最初解决方案如下:

1.将用户输入的数字根据数字与字母的映射关系,转成相应的字母

2.将当前输入的字母,在数据库中查询,并将能匹配到的字母组合记录下来,作为下一次匹配的基础,如果没有匹配到任何数据,goto 4

3.当用户再次输入某个字母时,会在前一个基础上,生成新的匹配字符串,重复2

4结束


这个方法的好处是:由于将要输入的字母跟前一次输入的结果之间存在一定的联系,所以一般来说,最后能匹配到的数据集的大小会越来越小,越到最后匹配结果就会越快,不过会存在不当的地方,当用户撤销一个输入时,根据刚刚的算法的结果会存在数据被遗漏的情况。这个算法不会利用额外的空间。


用空间替换时间的方法

前一个算法中,我们采用将用户的输入变成字符串,这里我们考虑另外一种解决方法:将数据库中的联系人名字的拼音转成相应的数字

解决方案:

在数据库创建过程中,创建一个触发器,该触发器的作用是:当用户插入一条新数据时,检测联系人是否是中文,如是转为拼音,根据数字与字符的对应关系,在将拼音转成相对应的数字,这样在数据库中就会存在一个关于拼音对于的数字的属性,用户的输入匹配可以拿这个属性来进行匹配,虽然会占用空间,不过对于后期的匹配来说,性能有很大的提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值