题解 | #计算字符串的距离#

计算字符串的距离

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;
}
全部评论

相关推荐

重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务