百度面试题 字符串相似度 算法 similar_text 和页面相似度算法

在百度的面试,简直就是花样求虐。

首先在面试官看简历的期间,除了一个自己定义字符串相似度,并且写出求相似度的算法。

。。。这个确实没听说过,php的similar_text函数也是闻所未闻的。之前看seo的时候,到简单了解了一下页面的相似度,百度算法中很常见的需要判断页面是否是重复的,重复的肯定就不收录了,做seo很重的一个工作就是写原创文章,以保持网站的更新,吸引百度的收录,以增加流量。

页面的相似度,是纯数学的,因为百度的主要是收录中文,所以中文需要先拆词,然后计算词语的在文章中出现的频度。然后这些词组加权,求出一个向量,然后求两个页面的余弦值。这个东西反正肯定不会,扯淡还是扯的。

这里的字符串的相似度,是譬如abacbcd和abcbcd之类的没有意义的纯字符串。

既然让自己定义,肯定定义一个简单的了,主要就是查找最大相同的字符串及长度。(漏掉好多可能)

回来自己查了一下。才发现如下:

这个similar_text分为三步

第一步

以后接着写。

时间: 2024-12-04 17:41:45

百度面试题 字符串相似度 算法 similar_text 和页面相似度算法的相关文章

算法--两道百度笔试题

算法--两道百度笔试题 今天看到一位园友写了一篇关于百度的面试题的博客,成了评论头条,再下看了一下,非常感兴趣,那位博主的算法能力跟我一样需要提高,估计他的功力还在我之下,所以再下不才,在这里把自己的源码贴出来. 百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变.时空复杂度要求分别为:o(n)和o(1).          其实开始的时候我也是一头雾水,在纸上画画之后发现,其实就是一道变形的插入排序.幸运的是

偶然在博客中见对百度一个面试题的探讨,写些自己的看法以及指出探讨中不对的观点:百度面试题:求绝对值最小的数 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现 例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

今天申请了博客园账号,在下班后阅览博客时发现了一个关于百度面试题探讨的博客(其实是个很基础的问题),此博客url为:http://www.blogjava.net/nokiaguy/archive/2013/01/30/394920.html 其中下面有人评论为: 有序列表查找显然二分啊,博主貌似对java的arrays和collections不是很熟. private static int getMinAbsoluteValue(final int[] source) { int index

simhash算法实现--查找文件相似度

一.Simhash简介 SimHash是用来网页去重最常用的hash方法,速度很快.Google采用这种算法来解决万亿级别的网页去重任务. SimHash算法的主要思想是降维.将高维的特征向量映射成一个低维的特征向量,通过两个向量的Hamming Distance来确定文章是否重复或者高度近似. 在simhash的发明人Charikar的论文中并没有给出具体的simhash算法和证明,"量子图灵"得出的证明simhash是由随机超平面hash算法演变而来的. 参考文献:<Dete

百度面试题(总结+更新)

关于百度面试题我现在的感觉是用不上很深的算法,但是思路很灵活,前边已经我已经贴出了5种解法的源代码,本来以为可以到此收尾,今天又有一位同学说了一种思路比较奇怪但是符合题意的方法..请看关于淘汰85%面试者的百度开发者面试题的看法的评论,@apollokk . 后边我也说过几种优化后的方法,如果你还没有看可以看一下百度开发者面试题(优化)这篇文章,关于它的总结你可以参看:百度开发者面试题(总结),当然本问还是要把apollokk的方法的完整代码贴出了,由于思路不难,我就不多说废话了(顺便说一下,输

算法复杂度,及三种主要排序算法的研究

一.时间复杂度 1.时间频度  T(n),n为问题的规模 即--算法中语句的执行次数.又叫语句频度. 2.时间复杂度 记作 O( f(n) ),这里的f(n)是一个T(n)的同数量级函数. 如O(1)表示算法的语句执行次数为一个常数,不随规模n的增长而增长: 又如T(n)=n^2+3n+4与T(n)=4n^2+2n+1它们的频度不同, 但时间复杂度相同,都为O(n^2). 3.算法的性能 主要用算法的 时间复杂度 的数量级来评价一个算法的时间性能. 二.空间复杂度 S(n),包括3方面: 1.算

计算字符串的最长回文子串 :Manacher算法介绍

在介绍算法之前,首先介绍一下什么是回文串,所谓回文串,简单来说就是正着读和反着读都是一样的字符串,比如abba,noon等等,一个字符串的最长回文子串即为这个字符串的子串中,是回文串的最长的那个. 计 算字符串的最长回文字串最简单的算法就是枚举该字符串的每一个子串,并且判断这个子串是否为回文串,这个算法的时间复杂度为O(n^3)的,显然无法令人 满意,稍微优化的一个算法是枚举回文串的中点,这里要分为两种情况,一种是回文串长度是奇数的情况,另一种是回文串长度是偶数的情况,枚举中点再判断是否 是回文

今天面试问了一道题。说一串字符串由这几个符号组成&quot;&lt;&gt;{}[]()”,写一个算法,例如如果组成方式为“&lt;&gt;{[]}{}()”这种,也就是XML格式那种则返回true。否则返回false;

原创 今天面试问了一道题.说一串字符串由这几个符号组成"<>{}[]()",写一个算法,例如如果组成方式为"<>{[]}{}()"这种,也就是XML格式那种则返回true.否则返回false: 当时没想出来, 只想到了回文数解决办法.回文数解决办法是颠倒比较,相等为true: 换xml格式当时真没想到啥好方法: 在回来的路上想到了.. .. 去重,吧临近的一组去掉,在递归调用比较去重直到最后,如果有剩下则不返回false:否则true: 代码

百度笔试题:malloc/free与new/delete的区别(转)

百度笔试题:malloc/free与new/delete的区别 相同点:都可以申请动态内存和释放内存. 不同点: (1) 操作对象有所不同: malloc和free是C/C++的标准库函数,new和delete是C++的运算符.对于非内部数据类的对象而言,光用malloc/free 无法满足动态对象的要求.对象在创建时要自动执行构造函数,对象消亡之前要自动执行析构函数,malloc和free是库函数而不是运算符,不在编译器的控制权限之内,不能够把执行构造函数和析构函数的任务强加给malloc/f

算法常识——结构与复杂度

前言 最一些算法基础的整理. 很多人提到算法就会涉及到数据结构. 个人理解之所以有数据结构是因为存储这个问题. 程序无论是读取硬盘还是内存,涉及到如何读取,读取问题呢,相当于找.那么如何能够快速的找到?关键在于当时我们怎么放,如何存放就是数据结构. 常见的数据结构:线,树,图. 个人理解,线是一维概念,图和树都是二维概念,当然还有三维概念,暂时不理解. 什么是算法?1+1等于2,算不算? 个人理解,算.实际上1+1等于2,并不简单,具体可参考计算机是如何计算的,而这个算法奠定了计算机基础. 符合