题解 | #计算字符串的距离#
计算字符串的距离
http://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314
#include<bits/stdc++.h>
using namespace std;
int main()
{
string word1, word2;
while( cin>>word1>>word2 )
{
int n = word1.size(), m = word2.size();
if( m*n == 0 ) cout<<(m+n)<<endl;
int dp[n+1][m+1];
for( int i=0; i<n+1; i++) // 删除操作或插入操作
{
dp[i][0] = i;
}
for( int j=0; j<m+1;j ++) // B有字符,删除B或插入A
{
dp[0][j] = j;
}
for( int i=1; i<n+1; ++i ) // 开始循环
{
for( int j=1; j<m+1; j++ ) // 开始循环
{
int left = dp[i-1][j] +1; // 左边
int down = dp[i][j-1] +1; // 右边
int left_down = dp[i-1][j-1];
if( word1[i-1] != word2[j-1] ) left_down +=1; // i-1就是第i个!修正一下这个字符,如果相等则直接相等
dp[i][j] = min( left, min( down, left_down) ); // 神奇
}
}
cout<<dp[n][m]<<endl;
}
return 0;
}
查看14道真题和解析
CVTE公司福利 672人发布