1,Yahoo:yahoo的题目我觉得其实挺好的,难度适中
有道网络基础题目,我其实这次校招没怎么准备网络这块的基础知识和数据库的,所以这类的题目我都只能略过了,或者凭着以前的记忆去推测,其实楼主自认为学习能力还不错,但是一旦不用,那就是长期记忆力为最低档的节奏了。
问的是TCP传输的过程中,为什么发送方不需要Care收没收到ACK的消息。
这里重点提的是yahoo笔试题目的最后一题,面试的时候面试官还特地问我有没有回去继续想。。。我回去继续想的是那道网络题,然后又是各种校招信息,没时间顾及。。。
最后一题大概是这样的,假设字符串相似的前提条件是:A,B两个字符串各自删掉一个字符后,如果相等,则判定为相似的,这个判定比较简单,就不再赘述了。
题目问题是,一个字符串的子串中,有多少个是相似的呢?
这里有1个启发点吧:
俩个字符串相似,则代表着这里头的相对应位置的子串都是相似的如 adg和abd,bcaed和caked等等。
adgbcaed
adbcaked
所以从这一步便可以过滤掉很多子串相比。
我自己大概的思路是先求出一个字符串的集合,求出他们的每一对。拥有相同字符串对的集合记上其个数,每次记为相似时则加上其个数,并从字符串对列表中删除。
然后从最长子串开始往下递归来判断是否是相似,也判断记录表中,他俩还非相似子串。
如果是相似,如果子串在集合中,则将相对应位置的子串进行处理
以此循环。
abcem(a_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,有谁有其他方法末,脑袋最近都不好使用