2022年11月19日 星期六

[583] Delete Operation for Two Strings

感覺跟[1143] Longest Common Subsequence是一樣的題目?! 果不其然XD
所以就先貼過來用了 XD
長度的算法是各自的長度減去共同的長度再相加, 而不是總長(A+B)再減common 喔XD

另, 因這題不用考慮回傳值是不是要 allocate , 就把array 用固定值設好然後memset 設成0 就好了,速度會比較快~~~~(咦算是加速了1143 題嗎XD)
#define MAX(A,B) (A>B)?A:B;
int minDistance(char * word1, char * word2){

int l1= strlen(word1)+1;
int l2= strlen(word2)+1;

int dp[l1][l2];
memset(dp, 0,sizeof(int)*(l1*l2));
for (int i=1;i<l1;i++)
for (int j=1;j<l2;j++)
{
if (word1[i-1]==word2[j-1])
dp[i][j]=dp[i-1][j-1] +1;
else
dp[i][j]=MAX(dp[i-1][j],dp[i][j-1]);
}

int length= dp[l1-1][l2-1];
return (l1-1-length)+(l2-1-length);
}

沒有留言:

張貼留言