免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 63229 | 回复: 9
打印 上一主题 下一主题

[算法] 一定要点我啊!假设一个字符串对应一个数字,给你某个字符串要找到对应数字 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-08-12 10:21 |只看该作者 |倒序浏览
假设一个字符串对应一个数字,给你某个字符串要找到对应数字,大家给我点建议吧,kmp不知道可以吗。
为什么要这样做呢?数字对应数据库的ID,这样索引查找起来比较快。我真是不能理解,其实数据库就百位级别,用索引查找跟字符串(字符串唯一)查找能有区别么?我是这么说的,可是同事反问我“要是一百万台机子请求服务器查找呢?”,我就奇怪了,一百万台请求一百万次,又不是一次查找一百万条。无论是索引还是直接字符串,既然查找一次用的时间可以认为是相同的n秒,你查找一百万次,难道时间就不同的?求解释!

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
2 [报告]
发表于 2016-08-12 12:08 |只看该作者
1581526111 发表于 2016-08-12 10:21
假设一个字符串对应一个数字,给你某个字符串要找到对应数字,大家给我点建议吧,kmp不知道可以吗。
为什么 ...

支持你的想法。至于“要是一百万台机子请求服务器查找呢”,那是架构问题。要设计一个适当的并行服务架构来解决这个问题。
我不相信你的检索算法会比数据库快。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:032015年亚洲杯之中国
日期:2015-04-22 15:52:45
3 [报告]
发表于 2016-08-12 12:13 |只看该作者
如果必须要用, 那就用标准的字符串哈希算法呗----
其实DB里面, 字符串长度可控, 没必要这样折腾去.

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2016-08-12 14:25 |只看该作者
Map<String, Integer>

论坛徽章:
0
5 [报告]
发表于 2016-08-12 17:06 |只看该作者
大哥怎么不按套路出牌,标题明确写了要自己实现,再说C中没有map 回复 4# lxyscls


   

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
6 [报告]
发表于 2016-08-13 14:05 |只看该作者
本帖最后由 yulihua49 于 2016-08-13 14:07 编辑
1581526111 发表于 2016-08-12 17:06
大哥怎么不按套路出牌,标题明确写了要自己实现,再说C中没有map 回复 4# lxyscls

坛子里有C_STL,你找找看。
SDBC里有BB_tree,平衡二叉树。
自己写一个也行。

不过这样做没啥意义。


你还是在数据库里建一个表,必要时调到内存使用。调进来时排个序,然后用二分查找。

论坛徽章:
8
申猴
日期:2014-01-01 22:11:07白羊座
日期:2014-11-18 20:53:022015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之四川
日期:2016-01-19 18:39:36综合交流区版块每日发帖之星
日期:2016-06-07 06:20:0015-16赛季CBA联赛之广东
日期:2016-10-30 11:34:40CU十四周年纪念徽章
日期:2016-11-13 10:06:5715-16赛季CBA联赛之同曦
日期:2022-08-28 15:58:19
7 [报告]
发表于 2016-10-06 17:26 |只看该作者
按套路出牌就不是你大哥了!!!!lol

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
8 [报告]
发表于 2018-05-01 11:54 |只看该作者
hash,只能严格相等,不能模糊匹配。

论坛徽章:
0
9 [报告]
发表于 2018-05-01 15:53 |只看该作者
就像数组,字节定位到索引,和遍历一遍,哪个快?

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
10 [报告]
发表于 2018-05-15 21:20 |只看该作者
如果字符串插入时就考虑排序,或考虑建索引。则查找可在线性时间内完成。另外,单纯查找操作是可以直接多任务而不需要同步的。所以,支持上百万级的查找是没问题的。难的是修改操作之间以及和查找之间的同步问题。这可以通过系统设计来降低问题的规模。以上乃一家之言,仅当参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP