[发明专利]字符处理方法、装置、计算机设备及存储介质在审
申请号: | 202010670485.0 | 申请日: | 2020-07-13 |
公开(公告)号: | CN113934892A | 公开(公告)日: | 2022-01-14 |
发明(设计)人: | 王宇;许鑫城 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 张所明 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 字符 处理 方法 装置 计算机 设备 存储 介质 | ||
本申请实施例公开了一种字符处理方法、装置、计算机设备及存储介质,属于计算机技术领域。该方法包括:接收携带目标字符串的存储指令,按照多个目标字符的排列顺序遍历多个目标字符,对于当前遍历的目标字符,执行如下步骤:确定字典树中的第一节点,第一节点存在子节点,则创建链表,作为子节点的兄弟节点,在链表中存储目标字符。在已经存在子节点的情况下,创建链表作为兄弟节点,由于链表为分散的内存空间而不是连续的内存空间,能够实现随时使用随时创建,而无需创建额外的链表,避免了存储目标字符串时占用大量的内存空间。
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种字符处理方法、装置、计算机设备及存储介质。
背景技术
AC(Aho-Corasick,艾豪-克拉斯克)自动机是一种用于表示字符串集合并提供字符串匹配功能的算法,字符串集合中包括一个或多个字符串,每个字符串中包括一个或多个字符,AC自动机包括字典树,字典树包括不同层级的节点,每个节点存储字符串集合中的一个字符。
相关技术中,通常会在数组中存储字符,若字符串集合中包括N种字符,那就需要为每个节点创建包含N个内存空间的数组,将该数组中的N个内存空间均作为该节点的子节点,以便在该节点的子节点中存储字符。因此,会消耗大量内存空间,造成内存空间的浪费。
发明内容
本申请实施例提供了一种字符处理方法、装置、计算机设备及存储介质,可以节省存储字符的内存空间。所述技术方案如下:
一方面,提供了一种字符处理方法,所述方法包括:
接收携带目标字符串的存储指令,所述目标字符串包括按顺序排列的多个目标字符;
按照所述多个目标字符的排列顺序遍历所述多个目标字符,对于当前遍历的目标字符,执行如下步骤:
确定字典树中的第一节点;所述目标字符是所述目标字符串中的第一个字符的情况下,所述第一节点为所述字典树中的根节点,或者,所述目标字符不是所述目标字符串中的第一个字符的情况下,所述第一节点为所述目标字符的上一个字符所在的节点;
所述第一节点存在子节点,则创建链表,作为所述子节点的兄弟节点;
在所述链表中存储所述目标字符。
可选地,所述第一节点存在子节点,则创建链表,作为所述子节点的兄弟节点,包括:
所述第一节点存在子节点,所述子节点不存在兄弟节点,且所述子节点中的字符与所述目标字符不相同,则创建链表,作为所述子节点的兄弟节点。
可选地,所述第一节点存在子节点,则创建链表,作为所述子节点的兄弟节点,包括:
所述第一节点存在子节点,所述子节点存在兄弟节点,所述子节点中的字符和所述兄弟节点中的字符均与所述目标字符不相同,则创建链表,作为所述子节点的兄弟节点。
另一方面,提供了一种字符处理装置,所述装置包括:
存储指令接收模块,用于接收携带目标字符串的存储指令,所述目标字符串包括按顺序排列的多个目标字符;
遍历模块,用于按照所述多个目标字符的排列顺序遍历所述多个目标字符;
节点确定模块,用于对于当前遍历的目标字符,确定字典树中的第一节点;所述目标字符是所述目标字符串中的第一个字符的情况下,所述第一节点为所述字典树中的根节点,或者,所述目标字符不是所述目标字符串中的第一个字符的情况下,所述第一节点为所述目标字符的上一个字符所在的节点;
链表创建模块,用于所述第一节点存在子节点,则创建链表,作为所述子节点的兄弟节点;
字符存储模块,用于在所述链表中存储所述目标字符。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010670485.0/2.html,转载请声明来源钻瓜专利网。