1. 题目

字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

示例 1:
输入:
first = "pale"
second = "ple"
输出: True示例 2:
输入:
first = "pales"
second = "pal"
输出: False

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/one-away-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

请参考我的博客:编辑距离

class Solution {public:bool oneEditAway(string a, string b) {int m = a.size(), n = b.size(), i, j;if(abs(m-n) >= 2)return false;if(m==0 || n==0)return true;vector<vector<int>> dp(m,vector<int>(n,0));//初始化第一行,第一列的编辑距离for(j = 0; j < n; j++){if(a[0]==b[j])    dp[0][j] = j;else if(j != 0) dp[0][j] = 1+dp[0][j-1];else           dp[0][j] = 1;}for(i = 0; i < m; i++){if(a[i]==b[0])    dp[i][0] = i;else if(i != 0) dp[i][0] = 1+dp[i-1][0];else           dp[i][0] = 1;}//填写状态表for(i = 1; i < m; ++i){for(j = 1; j < n; ++j){if(a[i] == b[j])dp[i][j] =   min(dp[i-1][j-1],dp[i-1][j]+1,dp[i][j-1]+1);elsedp[i][j] = min(1+dp[i-1][j-1],dp[i-1][j]+1,dp[i][j-1]+1);}}return (dp[m-1][n-1] < 2);}int min(int x, int y, int z){int m = INT_MAX;if(x < m)   m = x;if(y < m) m = y;if(z < m) m = z;return m;}
};

程序员面试金典 - 面试题 01.05. 一次编辑(编辑距离,DP)相关推荐

  1. 程序员面试金典面试题 01.06. 字符串压缩

    前言 本系列文章为<程序员面试金典>刷题笔记. 题目位置:字符串压缩 题集:程序员面试金典 题目 字符串压缩.利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能.比如,字符串a ...

  2. 程序员面试金典 - 面试题 03.05. 栈排序(两栈)

    1. 题目 栈排序. 编写程序,对栈进行排序使最小元素位于栈顶. 最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中. 该栈支持如下操作:push.pop.peek 和 ...

  3. 程序员面试金典 - 面试题 01.02. 判定是否互为字符重排(哈希map)

    1. 题目 给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串. 示例 1: 输入: s1 = "abc", s2 = &qu ...

  4. 程序员面试金典 - 面试题 01.01. 判定字符是否唯一(位运算,牛)

    1. 题目 实现一个算法,确定一个字符串 s 的所有字符是否全都不同. 示例 1: 输入: s = "leetcode" 输出: false 示例 2: 输入: s = " ...

  5. 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列

    题目难度: 简单 原题链接 题目描述 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. ...

  6. 程序员面试金典 - 面试题 17.05. 字母与数字(哈希map+思维转换)

    1. 题目 给定一个放有字符和数字的数组,找到最长的子数组,且包含的字符和数字的个数相同. 返回该子数组,若存在多个最长子数组,返回左端点最小的.若不存在这样的数组,返回一个空数组. 示例 1: 输入 ...

  7. 程序员面试金典 - 面试题 08.05. 递归乘法(位运算)

    1. 题目 递归乘法. 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘. 可以使用加号.减号.位移,但要吝啬一些. 示例1:输入:A = 1, B = 10输出:10示例2:输入:A = ...

  8. 程序员面试金典 - 面试题 16.05. 阶乘尾数(5的因子)

    1. 题目 设计一个算法,算出 n 阶乘有多少个尾随零. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零.示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数 ...

  9. 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)

    1. 题目 稀疏数组搜索.有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置. 示例1:输入: words = ["at", "" ...

最新文章

  1. php 空格zhuanyi,php写的将逗号、空格、回车分...-php字符转义的相关注意事项-IIS环境中防止本地用户用fsockopen进行DDOS攻击的方法_169IT.COM...
  2. python基础知识~ 函数详解2
  3. 跟我学Kafka源码Producer分析
  4. 11个好用到起飞的「Python字典」知识点!
  5. 【小题目】 输出分数对应的等级 >=90-A >=80-B >=70-C >=60-D <60-E,从控制台获取数据
  6. python list遍历定位元素_python for循环,第二遍定位不到元素?
  7. 网页设计上机考试原题_Dreamweaver上机考试题目dreamweaver试题库网页制作试题.doc...
  8. 学习 TList 类的实现[6]
  9. bzoj2208:[Jsoi2010]连通数
  10. Spring Bean初始化的几种方法以及执行顺序
  11. python和c语言的区别-C语言、Java语言和python语言的区别在哪里
  12. 构建基本脚本(转)*****好文章*****
  13. 狂神说Linux学习笔记
  14. 【excel问题】关于组织策略阻止超链,解决方法
  15. scikit-learn:回归分析——多元线性回归LinearRegression
  16. ajax直接调用数据库数据库数据库,AJAX调用mysql数据库简单例子(示例代码)
  17. 清除FreeIPA SSSD缓存
  18. 熊猫烧香病毒幕后黑手曝光 网络世界高手对决一个月
  19. JS解密,在线JS解密解密
  20. hive--解决使用not in之后返回数据为空的问题

热门文章

  1. python xyz_python中xyz坐标的欧几里德距离
  2. python update skeleton 不自动_python编程笔记(1)-数据类型
  3. 如何用css和HTML结合画熊,结合伪元素实现的纯CSS3高级图形绘制
  4. gcc编译c文件的简单操作
  5. html如何制作滑块,网页制作html5实现滑块功能之type=quot;rangequot;属性-建站-建站教程-建站方法-米云建站 - 米云问答...
  6. 【LeetCode】053. Maximum Subarray
  7. 带日期的bean转为json(bean-JSON)
  8. 简单几何(极角排序) POJ 2007 Scrambled Polygon
  9. 基于Spring框架的Shiro配置
  10. C#4.0 Collections【集合】