拨号盘匹配联系人

很多软件如ex拨号、qq通讯录都有类似功能
一:拼音首字母匹配联系人

[img]http://dl.iteye.com/upload/attachment/0072/2847/1e685225-0fd7-3d2a-88cd-8a51ce451c7d.png[/img]

二:拼音匹配联系人

[img]http://dl.iteye.com/upload/attachment/0072/2845/f3a86f4c-8626-3295-ab3a-35693c396fd0.png[/img]

三:号码匹配联系人

[img]http://dl.iteye.com/upload/attachment/0072/2849/b7f38296-224f-37c2-90ed-63ef14c238c6.png[/img]

这里简单说下注意要点和算法思路吧

匹配规则,这里有三种,分别是联系人拼音匹配,联系人拼音首字母匹配,联系人号码匹配。其中联系人拼音首字母匹配只要匹配的字符串为拼音首字母中的子字符串即可,二拼音匹配除了符合是其子字符串外还需符合子字符串首字母为,汉字中的拼音首字母。如王小明(wangxiaoming)可匹配 wangx、xiaomin、等,但不匹配angxiao、iaoming。号码匹配较简单,也只需符合子字符串即可。

算法思路:
1,首先是将所有联系人的信息加载到内存,为了显示与数据库内容一致可在onresume时候读取,若不严格要求内容一致可在,onstart时候读取,需要的数据有、联系人id,名字、号码、头像(可选)。
2,将数字键盘输入的数字组合,转化成用于匹配的字母串数组
3,循环所有联系人与字母串数组进行三种匹配,若符合将其加入到,用于显示的结果集合中
4,取三种结果集的并集(其实只需一个集合,既匹配过程中已有集合在里面便不再加入结果集)
5,ListView更新自定义Adapter,主要重点是,显示加亮名字,号码,字段。用SpannableString辅助

这里在说第二步,数字组合如何转换成字母串数组。我们知道数字键对应的英文字母是这样的:2(ABC),3(DEF),4(GHI),5(JKL),6(MNO),7(PQRS),8(TUV),9(WXYZ)
可以看到一个数字对应的字母数为3-4,我们以3为准,2个数字键对应的字母串组合3*3 = 9
以此类推可知,字母串数与数字数的关系为 3的n次方,算法复杂度上来数这是个极差的效率。只要超过十几位便是天文数字,所以必须优化。我们采用:不符去除,逐级相乘的办法。例如输入23后有匹配数据的字母串组合有{AD,BE},那么当我们输入第三个数字键时,字母串组合只有2*3个,进行匹配后,再除去不符合的字母串组合。依次下去,便可,得到较少字母串组合数。但只有这样还不够,因为还有一个特殊的键,删除键。所以我们需要有一个栈,用于保存之前符合匹配的字母串。输入数字键,时候推入栈顶,输入删除键时候推出该字母串组合。

转载请注出处
python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
JSP基于SSM网上医院预约挂号系统毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值