问题:

给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。

你总共三种操作方法:

1、插入一个字符

2、删除一个字符

3、替换一个字符

格式:

输入行输入两个字符串 word1 和 word2,最后输出将 word1 转换为 word2的最少操作次数。

例如:
输入

word1 = "mart"

word2 = "karma"

输出

3

准备知识:

编辑距离及编辑距离算法

代码实现:

1.

def d(m, n):
if m == 0 or n == 0:
return abs(m - n)
if word1[m - 1] == word2[n - 1]:
return d(m - 1, n - 1)
else:
return min([d(m, n - 1) + 1, d(m - 1, n) + 1, d(m - 1, n - 1) + 1]) while True:
word1 = input("word1=:")
word2 = input("word2=:")
print(d(len(word1), len(word2)))

2.

def minDis(word1,word2):
m = len(word1)+1
n = len(word2)+1
dp = [[0 for i in range(n)] for j in range(m)] for i in range(n):
dp[0][i] = i for i in range(m):
dp[i][0] = i for i in range(1,m):
for j in range(1,n):
dp[i][j] = min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+(0 if word1[i-1]==word2[j-1] else 1))
return dp[m-1][n-1] if __name__ == '__main__':
word1 = input('word1=')
word2 = input('word2=')
print(minDis(word1, word2))

给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。的更多相关文章

  1. 给出两个单词(start和end)与一个字典,找出从start到end的最短转换序列

    问题 给出两个单词(start和end)与一个字典,找出从start到end的最短转换序列.规则如下: 一次只能改变一个字母 中间单词必须在字典里存在 例如: 给出 start = "hit ...

  2. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  3. 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)

    解题: 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码[123和12345]那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出 ...

  4. 用JAVA写一个函数,功能例如以下: 随意给定一组数, 找出随意数相加之后的结果为35(随意设定)的情况

    用JAVA写一个函数.功能例如以下:随意给定一组数,比如{12,60,-8,99,15,35,17,18},找出随意数相加之后的结果为35(随意设定)的情况. 能够递归算法来解: package te ...

  5. 有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a

    题目:有两个指针pa,pb分别指向有两个数,a,b,请写一个函数交换两个指针的指向,也就是让pa指向b,让pb指向a,具体实现如下: #include<stdlib.h> #include ...

  6. 有两个数a,b,请写一个函数交换a,b

    题目:有两个数a,b,请写一个函数交换a,b,具体实现如下: #include<stdlib.h> #include<stdio.h> int swap(int * pA, i ...

  7. 【C语言】写一个函数,实现字符串内单词逆序

    //写一个函数,实现字符串内单词逆序 //比如student a am i.逆序后i am a student. #include <stdio.h> #include <strin ...

  8. 《剑指offer》写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

    弱菜刷题还是刷中文题好了,没必要和英文过不去,现在的重点是基本代码能力的恢复. [题目] 剑指offer 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. [思路] 直觉 ...

  9. 用C#写一个函数,在一个数组中找出随意几个值相加等于一个值 与迭代器对比

    算法!用C#写一个函数,在一个数组中找出随意几个值相加等于一个值比如,数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}  要找出那些数相加等 ...

随机推荐

  1. git添加删除远程tag

    git tag -a test20190108_1 -m "fix bug" git push origin test20190108_1 git push origin :ref ...

  2. [Android] Android 锁屏实现与总结 (一)

    实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] A ...

  3. LaTeX技巧561:LaTeX如何让每一章带有目录?

    转自: http://blog.sina.com.cn/s/blog_5e16f1770102ds8b.html LaTeX技巧561:LaTeX如何让每一章带有目录? [问题描述] 当前章节列出该章 ...

  4. How to learn PDE (怎么学偏微分方程)

    To learn PDE, you need some knowledge of physics (to build up the intuition), solid training of anal ...

  5. jpa返回List<Map<String, Object>>相当于jdbctemplate的queryForlist

    public class Test(){ @PersistenceContext(unitName = "manageFactory") protected EntityManag ...

  6. 定义Sales_data类型

    Sales_data初步定义如下: struct Sales_data { string bookNo; unsigned units_sold = ; double revenue = 0.0; } ...

  7. CReLU激活函数

    转载自CSDN, CReLU激活函数 CReLU 一种改进 ReLU 激活函数的文章,来自ICML2016. 1. 背景介绍 整个文章的出发点来自于下图的统计现象:  为了看懂上图. (1)首先介绍 ...

  8. 响应消息的内容类型 text/html; charset=utf-8 与绑定(application/soap+xml; charset=utf-8)的内容类型不匹配。

    问题表述: 响应消息的内容类型 text/html; charset=utf-8 与绑定(application/soap+xml; charset=utf-8)的内容类型不匹配. 说明: 此类问题当 ...

  9. 学习pano2vr制作html5全景笔记

    demo截图: demo下载: 百度网盘:http://pan.baidu.com/s/1o8yBwIA 密码:nf62(启服务端查看); 我制作是全屏定点360的全景页面,使用pano2vr软件制作 ...

  10. iOS 中的特殊字面量表示方法

    转义字符\0(空字符).\\(反斜线).\t(水平制表符).\n(换行符).\r(回车符).\"(双引号).\‘(单引号).单字节 Unicode 标量,写成\xnn,其中nn为两位十六进制 ...