72.单词转变

来源:互联网 发布:nba2konline作弊软件 编辑:程序博客网 时间:2024/06/06 19:23

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

测试代码(c++):

class Solution {public:    int minDistance(string word1, string word2) {        int n = word1.length();        int m = word2.length();        vector<vector<int> > dp(n+1,vector<int>(m+1,0));        int t = 0;        while(t<m+1||t<n+1)        {            if(t<m+1)                dp[0][t] = t;            if(t<n+1)                dp[t][0] = t;            t++;        }        for(int i=1;i<n+1;i++)        {            for(int j=1;j<m+1;j++)            {                if(word1[i-1]==word2[j-1])                {                    dp[i][j] = dp[i-1][j-1];                }else{                    dp[i][j] = min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;                }            }        }        return dp[n][m];    }};

这里写图片描述

原创粉丝点击