字符串出现位置检索

今天遇到一道面试题,还挺有意思的,在这里分享下自己的解题思路,并希望学习下大家的解决方案。

题目如下:
有多个文件,比如说File1,File2到FileN,每个文件内都存储了多个字符串,字符串间以空格分隔,问:如何获取一个指定字符串出现的文件列表?(文件数目可能很多,需要进行多次查找)

我的答案:
1. 文件名压缩:遍历多个文件,将出现过的字符串和文件名转换为bitmap的形式存储,例如存储长度为3的字符串,每个字符的取值有46种,即字符串的状态有46*46*46种,那么可以创建一个包含46*46*46个bit的数据结构,对应于java,就是长度为(46*46*46)/8=12167的byte数组,一共花费12167 / 1024 = 11.88KB的空间,而直接使用字符串数组,需要花费46*46*46*3*2(字符占2个字节)=584016byte = 570KB的存储空间,这样即使用bitmap存储字符串节省了内存空间。
2. 数据库索引:将字符串和文件名存储于数据库中,将字符串字段作为主键索引,提高查找的效率。

该题使用任何实现方式都可以,想问还有其他的解决方案吗?
#腾讯#
全部评论

相关推荐

我就是0offer糕手:北大不乱杀
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务