一种字符串的比较方法及装置制造方法及图纸

技术编号:9170973 阅读:126 留言:0更新日期:2013-09-19 19:29
本申请公开了一种字符串的比较方法及装置,针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;对于不存在对应的摘要特征值的字符串,计算并保存字符串的摘要特征值;比较至少两个字符串的摘要特征值是否相同;若是,确定至少两个字符串相同;若否,确定至少两个字符串不同。在互联网的业务开发和实施环境中存在重复执行海量数据处理运算的判同操作时,由于使用字符串对应的摘要特征值进行比对得到字符串的判同结果,相对于对两个字符串中的每个字符都要进行比对才能得到判同结果的方式,摘要特征值的数据量小于字符串,对摘要特征值进行比对能够大量的减少判同操作的计算量,节省了运算资源,提升了整体的字符串判同效率。

【技术实现步骤摘要】
一种字符串的比较方法及装置
本申请涉及计算机计算领域,尤其涉及一种字符串的比较方法及装置。
技术介绍
目前,在互联网的业务开发和实施环境中,海量数据处理运算的任务日益增多,这些海量数据处理运算有些是以字符串运算为中心的,其中,比较多个字符串诸如多个网页地址(URL)是否相同的运算又占据了极高的比例。传统的判断字符串是否相同的运算是通过诸如Strcmp函数实现的,对于两个需要进行判同操作(判断是否相同的操作)的字符串,从两个字符串的头部开始扫描比对每个字符是否相同,即字符串中有多少个字符就需要比对多少次,才能得到两个字符串判同的结果。在海量数据处理运算中重复执行判同操作的比率非常的高。例如,在字符串s1和s2进行判同之后,s1还可能和s3、s4、…sn进行判同操作,使用上述这种字符串的判同方式,每次字符串判同都需要比对多次才能得到判同结果,因此,整体的字符串判同效率较低,尤其是对于很长的字符串进行判同操作时上述问题特别突出。
技术实现思路
本申请实施例提供了一种字符串的比较方法及装置,用以实现在互联网的业务开发和实施环境中存在重复执行海量数据处理运算的判同操作时能够快速地得到字符串的判同结果。本申请实施例提供的一种字符串的比较方法,包括:针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;对于不存在对应的摘要特征值的字符串,计算并保存所述字符串的摘要特征值;比较所述至少两个字符串的摘要特征值是否相同;若是,确定所述至少两个字符串相同;若否,确定所述至少两个字符串不同。本申请实施例提供的一种字符串的比较装置,包括:第一判断模块,用于针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;计算模块,用于对于不存在对应的摘要特征值的字符串,计算并保存所述字符串的摘要特征值;第二判断模块,用于比较所述至少两个字符串的摘要特征值是否相同;若是,确定所述至少两个字符串相同;若否,确定所述至少两个字符串不同。本申请实施例的有益效果包括:本申请实施例提供的一种字符串的比较方法及装置,针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;对于不存在对应的摘要特征值的字符串,计算并保存字符串的摘要特征值;比较至少两个字符串的摘要特征值是否相同;若是,确定至少两个字符串相同;若否,确定至少两个字符串不同。在互联网的业务开发和实施环境中存在重复执行海量数据处理运算的判同操作时,由于使用字符串对应的摘要特征值进行比对得到字符串的判同结果,相对于对两个字符串中的每个字符都要进行比对才能得到判同结果的方式,由于摘要特征值的数据量往往远小于字符串的数据量,对摘要特征值进行比对得到判同结果,能够大量的减少判同操作的计算量,这节省了运算资源,提升了整体的字符串判同效率。附图说明图1为本申请实施例提供的字符串的比较方法的流程图;图2为本申请实施例提供的字符串的比较装置的结构示意图。具体实施方式下面结合附图,对本申请实施例提供的字符串的比较方法及装置的具体实施方式进行详细地说明。本申请实施例提供的一种字符串的比较方法,如图1所示,具体流程包括以下步骤:S101、针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;若是,执行步骤S103;若否,执行步骤S102;S102、对于不存在对应的摘要特征值的字符串,计算并保存字符串的摘要特征值;S103、比较至少两个字符串的摘要特征值是否相同;若是,执行步骤S104;若否,执行步骤S105;S104、确定至少两个字符串相同;S105、确定至少两个字符串不同。在互联网的业务开发和实施环境中存在重复执行海量数据处理运算的判同操作时使用本申请实施例提供的上述方法,将大量的字符串的比较转化为对字符串对应的摘要特征值进行比较,由于摘要特征值为一个数值,具体地,可以是32位或64位的长整数,具体长度在此不做限定,相对于现有技术对字符串中的每个字符逐一比对得到最后判同结果,只需对摘要特征值进行一次比对即可得到判同结果,减少了判同操作的计算量,提高了运算效率,节约了运算资源。尤其是在字符串较长、判同操作重复率较多的情况,使用本申请实施例提供的字符串比较方法,运算效率的提升更为明显。并且,较佳地,当摘要特征值设置为64位的长整数时,使用现有的64位硬件体系结构,诸如:寄存器或比较器等,就能实施本申请提供的上述字符串比较方法。下面对上述各步骤的具体实现方式进行详细的说明。在上述步骤S102中计算字符串的摘要特征值,具体地可以通过下述方式实现:对字符串进行哈希运算,将得到的哈希值作为字符串的摘要特征值,由于哈希运算属于现有技术,在此不做详述。专利技术人在使用哈希算法计算字符串的摘要特征值时,发现存在不同的字符串计算出来的摘要特征值可能相同的几率,即存在冲突几率。因此,专利技术人结合现有的哈希算法创造出复合哈希算法来计算摘要特征值,以避免发生冲突,具体过程如下:先对字符串进行至少两次不同的哈希运算,得到至少两个不同的哈希值;然后将至少两个不同的哈希值进行拼接处理,得到字符串的摘要特征值;或者,将至少两个不同的哈希值进行算术运算后,例如:加减乘除运算,得到字符串的摘要特征值。在具体实施时,专利技术人发现,将字符串的两次不同的哈希值进行拼接或者算术运算得到的摘要特征值就能够有效地避免冲突几率,因此,下述具体实例都是以两次不同的哈希运算为例说明。实例一:对于字符串进行两次不同的哈希运算可以使用JAVAJDK的String::HashCode函数实现的指纹算法进行计算,计算公式如下:h1=s[0]×P1n-1+s[1]×P1n-2+s[2]×P1n-3+……+s[n-1],h2=s[0]×P2n-1+s[1]×P2n-2+s[2]×P2n-3+……+s[n-1];其中,h1和h2为两个不同的哈希值;P1和P2为质数,例如:可以为29和31,在此不做限定;s[0]、s[1]、s[2]……s[n-1]分别为字符串第1位、第2位、第3位……第n位的字符。在具体实施时,以下述代码实现:实例二:对于字符串分别使用上述指纹算法和DanielJ.Bernstein教授专利技术的DJB算法进行计算,得到两个不同的32位的哈希值,具体实施时,DJB算法例如可以以下述代码实现(还可以使用其他版本的代码):上述实例一和实例二只是举例说明具体如何计算哈希值,本领域技术人员还可以使用其他哈希函数例如sdbm/FNV的函数进行哈希值的计算,在此不做限定。在计算出两个不同的哈希值h1和h2后可以使用(((long)h1<<32)|(long)h2公式,将h1和h2拼接成一个64位的摘要特征值,或者,将两个不同的哈希值做加减乘除的算术运算后,得到一个32位的摘要特征值。并且,在计算出字符串对应的摘要特征值后,将此摘要特征值和字符串一起保存,对于重复比对时就可以直接重复使用计算出的该字符串的摘要特征值,而存储摘要特征值的空间只需要8个字节即可。较佳地,如果在进行字符串比较时,对字符串的大小写不敏感,即对字符串的比较不区别大小写,就可以在计算字符串的摘要特征值之前,将字符串的各字符根据需要统一转换为大写或小写即可。基于同一专利技术构思,本申请实施例还提供了一种字符串的比较装置,由于该装置解决问题的原理与前述一种字符串的比较本文档来自技高网...
一种字符串的比较方法及装置

【技术保护点】
一种字符串的比较方法,其特征在于,包括:针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;对于不存在对应的摘要特征值的字符串,计算并保存所述字符串的摘要特征值;比较所述至少两个字符串的摘要特征值是否相同;若是,确定所述至少两个字符串相同;若否,确定所述至少两个字符串不同。

【技术特征摘要】
1.一种字符串的比较方法,其特征在于,包括:针对至少两个待比较的字符串,判断每个字符串是否存在对应的摘要特征值;对于不存在对应的摘要特征值的字符串,计算并保存所述字符串的摘要特征值,其中,计算所述字符串的摘要特征值时,具体包括:对所述字符串进行至少两次不同的哈希运算,得到至少两个不同的哈希值;将至少两个不同的哈希值进行拼接处理,得到所述字符串的摘要特征值;比较所述至少两个字符串的摘要特征值是否相同;若是,确定所述至少两个字符串相同;若否,确定所述至少两个字符串不同。2.如权利要求1所述的方法,其特征在于,使用下述指纹算法对字符串进行两次不同的哈希运算,得到两个不同的哈希值h1和h2:h1=s[0]×P1n-1+s[1]×P1n-2+s[2]×P1n-3+……+s[n-1],h2=s[0]×P2n-1+s[1]×P2n-2+s[2]×P2n-3+……+s[n-1];其中,P1和P2为质数,s[0]、s[1]、s[2]……s[n-1]分别为所述字符串第1位、第2位、第3位……第n位的字符;将所述两个不同的哈希值使用(((long)h1)<<32)|(long)h2公式进行拼接处理,得到所述字符串的摘要特征值。3.如权利要求1所述的方法,其特征在于,使用指纹算法和DJB算法分别对字符串进行哈希运算,得到两个不同的哈希值h1和h2;将所述两个不同的哈希值使用(((long)h1)<<32)|(long)h2公式进行拼接处理,得到所述字符串的摘要特征。4.如权利要求1-3任一项所述的方法,其特征在于,当对字符串的比较不区分大小写时,在计算所述字符串的摘要特征值之前,还包括:将所述字符串按照预...

【专利技术属性】
技术研发人员:韩军东
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1