leetcode - Edit Distance
2013-04-11 12:49 张汉生 阅读(150) 评论(0) 编辑 收藏 举报题目描述:点击此处
这道题错在delete之后return cur[len2], 在我的机器上内存还没有及时释放,结果仍然是对的,但是提交之后会有两个测试过不了,这种错误少犯,太折磨人了。
1 class Solution { 2 public: 3 int minDistance(string word1, string word2) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 int len1 = word1.length(); 7 int len2 = word2.length(); 8 int i, j; 9 if (len1==0 || len2==0) 10 return len1>len2? len1:len2; 11 int * last = new int[len2+1]; 12 int * cur = new int[len2+1]; 13 for (j=0; j<=len2; j++){ 14 last[j] = j; 15 cur[j] = j; 16 } 17 for (i=1; i<=len1; i++){ 18 cur[0] = i; 19 for (j=1; j<=len2; j++){ 20 int min = 1000000000; 21 if (word1.at(i-1) == word2.at(j-1)){ 22 if (min >last[j-1]) 23 min = last[j-1]; 24 } 25 if (min >last[j]+1) 26 min = last[j]+1; 27 if (min > cur[j-1]+1) 28 min = cur[j-1] + 1; 29 if (min > last[j-1]+1) 30 min = last[j-1]+1; 31 cur[j] = min; 32 } 33 for (j=0; j<=len2; j++) 34 last[j] = cur[j]; 35 } 36 int rlt = cur[len2]; 37 delete []last; 38 delete []cur; 39 return rlt; 40 } 41 };