2014校招Yahoo笔试的最后一题回顾分析

1,Yahoo:yahoo的题目我觉得其实挺好的,难度适中

有道网络基础题目,我其实这次校招没怎么准备网络这块的基础知识和数据库的,所以这类的题目我都只能略过了,或者凭着以前的记忆去推测,其实楼主自认为学习能力还不错,但是一旦不用,那就是长期记忆力为最低档的节奏了。

问的是TCP传输的过程中,为什么发送方不需要Care收没收到ACK的消息。

这里重点提的是yahoo笔试题目的最后一题,面试的时候面试官还特地问我有没有回去继续想。。。我回去继续想的是那道网络题,然后又是各种校招信息,没时间顾及。。。

最后一题大概是这样的,假设字符串相似的前提条件是:A,B两个字符串各自删掉一个字符后,如果相等,则判定为相似的,这个判定比较简单,就不再赘述了。

题目问题是,一个字符串的子串中,有多少个是相似的呢?

这里有1个启发点吧:

俩个字符串相似,则代表着这里头的相对应位置的子串都是相似的如 adg和abd,bcaed和caked等等。

adgbcaed

adbcaked

所以从这一步便可以过滤掉很多子串相比。

我自己大概的思路是先求出一个字符串的集合,求出他们的每一对。拥有相同字符串对的集合记上其个数,每次记为相似时则加上其个数,并从字符串对列表中删除。

然后从最长子串开始往下递归来判断是否是相似,也判断记录表中,他俩还非相似子串。

如果是相似,如果子串在集合中,则将相对应位置的子串进行处理

以此循环。

abcema_b,a_c,a_e,a_m,b_c,b_e,b_m,c_e,c_m,e_m)

              (ab_bc,ab_ce,ab_em,bc_ce,bc_em,ce_em)

               (abc_bce,abc_cem,bce_cem)

                (abce_bcem)

(乱想:)如果不相似,得删除k(假定为2)字符,n >2

oacdefg

acdfmgn

其实这里分段,可以知道:oacd和acdf是相似的,也就是在k和m之间相差一定数量时其实有相似字符可以抽离出来,也有些非相似字符可以直接pass。。

还有种动态规划,

从小到大,对相同length对的子串进行匹配:

如果length-1的子串相似,且length位置的不相等,则非

如果length-1的子串相似,且length位置相等,则相等

如果length-1的子串是相等的,则相似

但是下例就不能成功的

dabce

abcoe

So,有谁有其他方法末,脑袋最近都不好使用

点赞