zoukankan      html  css  js  c++  java
  • [Leetcode 93] 72 Edit Distance

    Problem:

    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

    Analysis:

    This is the classic dynamic programming problem. With the following inductive formula, it's easy to solve this problem:

    D(i, j) = min{D(i-1, j)+1, D(i, j-1)+1, D(i-1, j-1)+replace_cost}, replace_cost = 1 if word[i] != word[j] else euqals 0. Remember here the 1 can be changed to any other proper value.

    What the formula is saying is that: a new state can be obtained by 1). delete a character from string A; 2). insert a character into string B; 3). replace a character in string A to string B.

    Code:

     1 class Solution {
     2 public:
     3     int minDistance(string word1, string word2) {
     4         // Start typing your C/C++ solution below
     5         // DO NOT write int main() function
     6         int len1 = word1.length()+1, len2 = word2.length()+1;
     7         int way[len1][len2];
     8         
     9         for (int i=0; i<len1; i++)
    10             way[i][0] = i;
    11         
    12         for (int j=0; j<len2; j++)
    13             way[0][j] = j;
    14         
    15         int rep;
    16         for (int i=1; i<len1; i++)
    17             for (int j=1; j<len2; j++) {
    18                 way[i][j] = min(way[i-1][j]+1, way[i][j-1]+1);
    19                 rep = (word1[i-1] == word2[j-1]) ? 0 : 1;
    20                 way[i][j] = min(way[i][j], way[i-1][j-1]+rep);
    21             }
    22         
    23         
    24         return way[len1-1][len2-1];
    25     }
    26 };
    View Code
  • 相关阅读:
    PHP 计算程序运行的时间
    PHP 简易版生成随机码
    PHP读取FLASH 文件信息
    MongoDB基本使用
    PHP实现QQ达人信息抓取
    bjtuOJ 1188 素数筛选
    bjtuOJ 1139 Longest Common Subsequence
    BJTU1113扫雷问题
    C#线程池的使用详解
    C#域名解析的简单制作
  • 原文地址:https://www.cnblogs.com/freeneng/p/3220886.html
Copyright © 2011-2022 走看看