【面经】Facebook最新面试题-Edit Distance变形

插播一段题外话
你现在发牢骚,是因为你脑袋里的积淀还不够,
1 你积淀的宽度太窄
2 你涉猎的深度不够
3 如果不是以上,那就是你速度太慢。
当你面对所有一般题型时,你都应该:
10秒内识别出题型,及解题大致方法(dp,dfs,loop,greedy , binary-search,data-structure-alg....)
30秒内确定大致解题思路。包括识别出题目中的变形(需要注意到的点)
1分钟内想清楚算法模板。
5分钟内写出程序。
10分钟内通过程序。
只有严格按照这个过程来严格要求自己,才能够进一步提升。

【面经】Facebook最新面试题-Edit Distance变形_第1张图片

与 Edit Distance 类似的一个题,但要求是:
判断二个字符串的编辑距离是不是小于2.也就是相等或是编辑距离为1.

解答:
 我们可以设置2个指针,分别从2个字符串的起始处开始往后扫描。

 解法原理:如果2个字符串只差最多1的话,有2种情况:
1. 两个字符串相同长度,那肯定是存在replace 一个字符。所以如果遇到不同的字符串,
    两个指针都向前移动,一旦遇到不同的,就认为错误退出即可。
2. 两个字符串长度不等。那肯定是用了add/delete操作才能使2个字符串相同。所以,
    一旦遇到不同的字符,它肯定是插入进去的。可以将长度长的字符串的指针向后移动,
    如果后面出现不等,也是错误退出。

另外,以下代码中也有Edit Distance的递归+记忆矩阵的解法。这样的解法跟DP是一样快的,因为它也可以重复使用已经计算过的结果。
GitHub代码链接

你可能感兴趣的:(hihocode,脑洞)