给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。
示例:
- 输入: "sea", "eat"
- 输出: 2
- 解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"
-
#include <stdio.h> #include <stdlib.h> #include "string.h" #define min(a, b) (((a) > (b)) ? (b) : (a)) int maxLen(char* str1, int strSize1,char *str2,int strSize2){ int dp[strSize1+1][strSize2+1]; for (int i = 0; i <= strSize1; i++) dp[i][0] = i; for (int j = 0; j <= strSize2; j++) dp[0][j] = j; for (int i = 1; i <= strSize1; ++i) { for (int j = 1; j <= strSize2; ++j) { if (str1[i-1] == str2[j-1]) dp[i][j] = dp[i-1][j-1]; else dp[i][j] = min(dp[i-1][j]+1,dp[i][j-1]+1); } } printf("%d ",dp[strSize1][strSize2]); } int main() { char str1[]="sea"; char str2[]="eat"; maxLen(str1,3,str2,3); return 0; }