/*
* 算法思想: 动态规划解编辑问题。
*
*/
int min(int a, int b){
return a<b ? a:b;
}
int maxn(int a, int b){
return a>b ? a:b;
}
int minDistance(char * word1, char * word2){
int len1 = strlen(word1);
int len2 = strlen(word2);
int max = len1 > len2 ? len1 : len2;
if(!len1 || !len2) return maxn(len1, len2);
int i, j, dp[len1+1][len2+1];
for(i=0; i<=len1; i++){ /* 表示第一个字符串为空串,与第二个字符串进行匹配 */
dp[i][0] = i;
}
for(j=0; j<=len2; j++) {/* 表示第二个字符串为空串,与第一个字符串进行匹配 */
dp[0][j] = j;
}
for(i=1; i<=len1; i++){
for(j=1; j<=len2; j++) {
dp[i][j] = dp[i-1][j-1];
dp[i][j] = min(dp[i-1][j], dp[i][j]);
dp[i][j] = min(dp[i][j-1], dp[i][j]);
if(word1[i-1] != word2[j-1]){
dp[i][j]++;
}else{
dp[i][j] = dp[i-1][j-1];
}
//printf("%8d,", dp[i][j]);
}
//printf("\n");
}
return dp[len1][len2];
}
leetcode-72. 编辑距离-C语言
最新推荐文章于 2024-03-09 00:08:45 发布