题解 | #编辑距离(一)# 内存优化版本

编辑距离(一)

http://www.nowcoder.com/practice/6a1483b5be1547b1acd7940f867be0da

动态规划,可优化内存至 O( min( n1, n2)) 。
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str1 string字符串 
     * @param str2 string字符串 
     * @return int整型
     */
    int editDistance(string str1, string str2) {
        // write code here
        int n1 = str1.size();
        int n2 = str2.size();
        
        vector<int> dp(n2 + 1, 0);
        
        // 优化内存
        for(int i = 1; i <= n2; ++ i) dp[i] = i;
        for(int i = 1; i <= n1; ++ i)
        {
            int pre = dp[0];
            dp[0] = i;
            int temp;
            for(int j = 1; j <= n2; ++ j)
            {
                temp = dp[j];
                if(str1[i - 1] == str2[j - 1])
                {
                    dp[j] = pre; 
                }
                else
                { 
                    dp[j] = min(dp[j], min(pre, dp[j - 1])) + 1;
                }
                pre = temp;
            }
        }
        return dp[n2];
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:00
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务