zoukankan      html  css  js  c++  java
  • 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

    思路:

    动规

    代码:

     1     int min(int a, int b){
     2         if(a < b)
     3             return a;
     4         return b;
     5     }
     6     int minDistance(string word1, string word2) {
     7         // Note: The Solution object is instantiated only once and is reused by each test case.
     8         int len1 = word1.length(), len2 = word2.length();
     9         if(len1 == 0)
    10             return len2;
    11         if(len2 == 0)
    12             return len1;
    13         vector<vector<int> > v(len1+1, vector<int>(len2+1));
    14         int i,j;
    15         for(i = 1; i <= len1; i++)
    16             v[i][0] = i;
    17         for(i = 1; i <= len2; i++)
    18             v[0][i] = i;
    19         for(i = 1; i <= len1; i++){
    20             for(j = 1; j <= len2; j++){
    21                 if(word1[i-1] == word2[j-1])
    22                     v[i][j] = v[i-1][j-1];
    23                 else
    24                     v[i][j] = min(v[i-1][j-1]+1,min(v[i-1][j]+1, v[i][j-1]+1));
    25             }
    26         }
    27         return v[len1][len2];
    28     }
  • 相关阅读:
    MVC知识点01
    MVC知识点02
    ADO.NET基础01
    WinForm,MVC知识点
    C#基础01
    28、对多次使用的RDD进行持久化或Checkpoint
    27、优化数据结构
    26、高性能序列化类库
    25、诊断内存的消耗
    24、Checkpoint原理剖析
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3405413.html
Copyright © 2011-2022 走看看