[LeetCode]72.Edit Distance

题目

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)

You have the following 3 operations permitted on a word:

a) Insert a character
b) Delete a character
c) Replace a character

思路

具体参考:[经典面试题]字符串编辑距离

思路一 超时

代码

    /*--------------------------------------------
    *   日期:2014-03-01
    *   作者:SJF0115
    *   题目: 72.Edit Distance
    *   网址:https://oj.leetcode.com/problems/edit-distance/
    *   结果:AC
    *   来源:LeetCode
    *   博客:
    ------------------------------------------------*/
    #include <iostream>
    #include <vector>
    using namespace std;

        class Solution {
    public:
        int minDistance(string word1, string word2) {
            int m = word1.size();
            int n = word2.size();
            // Edit[i][j]为word1[0..i-1]和word2[0..j-1]的最小编辑数
            int Edit[m+1][n+1];
            // 初始化
            for(int i = 0;i <= m;++i){
                Edit[i][0] = i;
            }//for
            for(int i = 0;i <= n;++i){
                Edit[0][i] = i;
            }//for
            for(int i = 1;i <= m;++i){
                for(int j = 1;j <= n;++j){
                    // 当前字符相同
                    if(word1[i-1] == word2[j-1]){
                        Edit[i][j] = Edit[i-1][j-1];
                    }//if
                    else{
                        Edit[i][j] = 1 + min(Edit[i-1][j-1],min(Edit[i-1][j],Edit[i][j-1]));
                    }//else
                }//for
            }//for
            return Edit[m][n];
        }
    };

    int main(){
        Solution solution;
        string str1("ab");
        string str2("bc");
        cout<<solution.minDistance(str1,str2)<<endl;
        return 0;
    }

运行时间

时间: 2024-09-14 13:35:01

[LeetCode]72.Edit Distance的相关文章

Edit Distance

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.) You have the following 3 operations permitted on a word: a) Insert a characterb) Delete a characterc) Replace

leetcode难度及面试频率

转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Characters 3 2 string Two Pointers      

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

[经典面试题]字符串编辑距离

题目 给定一个源串和目标串,能够对源串进行如下操作: 1.在给定位置上插入一个字符 2.替换任意字符 3.删除任意字符 写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000. 思路 如果有两个串 A = xabcdae 和 B = xfdfa,它们的第一个字符是相同的,只要计算A[2-7] = abcdae 和 B[2-5] = fdfa的距离就可以了.但是如果两个串的第一个字符不相同,那么可以进行如下的操作(lenA和lenB分别是字符串A和B的长度

Word Ladder

Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, such that: Only one letter can be changed at a time Each intermediate word must exist in the dictionary For example, Given:start

LeetCode总结【转】

转自:http://blog.csdn.net/lanxu_yy/article/details/17848219 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近完成了www.leetcode.com的online judge中151道算法题目.除各个题目有特殊巧妙的解法以外,大部分题目都是经典的算法或者数据结构,因此做了如下小结,具体的解题思路可以搜索我的博客:LeetCode题解 题目 算法 数据结构 注意事项 Clone Graph BFS 哈希表 Word Ladder II

[LeetCode] Delete Operation for Two Strings 两个字符串的删除操作

Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in each step you can delete one character in either string. Example 1: Input: "sea", "eat" Output: 2 Explanation: You ne

求一个字符串编辑成为另一个字符串的最少操作数

原题链接: http://oj.leetcode.com/problems/edit-distance/ 这道题求一个字符串编辑成为另一个字符串的最少操作数,操作包括添加,删除或者替换一个字符.这道题难度是比较大的,用常规思路出来的方法一般都是brute force,而且还不一定正确.这其实是一道二维动态规划的题目,模型上确实不容易看出来,下面我们来说说递推式. 我们维护的变量res[i][j]表示的是word1的前i个字符和word2的前j个字符编辑的最少操作数是多少.假设我们拥有res[i]

JVM 并发性: Java 和 Scala 并发性基础

Java 并发性支持 在 Java 平台诞生之初,并发性支持就是它的一个特性,线程和同步的实现为它提供了超越其他竞争语言的优势.Scala 基于 Java 并在 JVM 上运行,能够直接访问所有 Java 运行时(包括所有并发性支持).所以在分析 Scala 特性之前,我首先会快速回顾一下 Java 语言已经提供的功能. Java 线程基础 在 Java 编程过程中创建和使用线程非常容易.它们由 java.lang.Thread 类表示,线程要执行的代码为 java.lang.Runnable