|
本帖最后由 agent124 于 2017-7-28 07:17 编辑
年纪大了,脑子本来就不好,现在越发感到不够用了,特别是碰到算法这种烧脑子的东西。
本来在看一本关于搜索引擎的书,倒不是想做搜索引擎,而是想利用它的部分技术,看了没多少,看到一个算法,Aho-Corasick算法,书中用来处理敏感词过滤。我水平差,一看到算法就头大。跳过这部分,倒也不影响原来的目标,但是觉得这个算法好像挺有用,就想搞懂,硬着头皮看了下去。
看了几遍还是弄不明白,只好上网搜相关资料,先是搜到某基百科,原来以为洋人写的容易懂些,结果由于自己水平差,看了半天还是云里雾里,于是又找中文资料,看了好几个博客,花了很长时间,才一点点约摸看明白了算法。
接下来是写程序实现,我水平差,一方面也想偷懒,看见有个博客上有完整实现,就想模仿一下,但他是用python写的,没学过,好在python的语法不难懂,逐句改写成c#,再加上一点检查null的语句,运行一下,似乎基本正常。
但是又发现这个程序是有问题的,起先以为是自己改写得有问题,但看了那个博客上的输出画面,和自己的一样,于是知道改写没问题,是原来的程序有问题。水平差,想不出优雅的解决办法,只好用略微有点肮脏的手法fix了。
运行正常后,又想调节它的功能。比如有这么个字符串(从博客上抄来的例子):ushers,现要检查它是否含有这些字符串:he, she, his, hers。原算法的运行结果是:she, hers。但是现在我希望匹配了she后,下次就从r开始匹配,也就是希望运行结果只有一个she。还好这个不难,改了一下就成了,虽然由于水平差,肯定不是效率最高的解决办法。
接下来又想在上面的基础上输出原字符串中不匹配的部分,仍以上为例,希望输出:u, rs。这个也不难,一下就改好了。
这个做好了,觉得可以应用在某些地方。虽然被算法烧了一回脑子,总算还是有收获。无足挂齿,贻笑大方,写出来不过是自暴其丑,让别人看到自己的水平有多差,这点东西都要折腾半天才搞懂。只好说是敝帚自珍吧。不管怎么说,弄懂了一个算法总是令人高兴的事。
|
评分
-
1
查看全部评分
-
|