【leetcode】Edit Distance
7794 단어 LeetCode
Edit Distance
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted on a word:
a) Insert a characterb) Delete a characterc) Replace a character
동적 계획을 채택하여 해답을 구하다.
1. d[0, j] = j;
2. d[i, 0] = i;
3. d[i, j] = d[i-1, j - 1] if A[i] == B[j]
4. d[i, j] = min(d[i-1, j - 1], d[i, j - 1], d[i-1, j]) + 1 if A[i] != B[j]
1 class Solution {
2 public:
3 int minDistance(string word1, string word2) {
4
5 int n1=word1.length();
6 int n2=word2.length();
7
8 if(n1==0) return n2;
9 if(n2==0) return n1;
10
11 //
12 //vector<vector<int> > dp(n1+1,vector<int>(n2+1));
13
14 int **dp=new int*[n1+1];
15 for(int i=0;i<n1+1;i++)
16 {
17 dp[i]=new int[n2+1];
18 }
19
20
21 dp[0][0]=0;
22 for(int i=1;i<=n1;i++)
23 {
24 dp[i][0]=i;
25 }
26 for(int j=1;j<=n2;j++)
27 {
28 dp[0][j]=j;
29 }
30
31 for(int i=1;i<=n1;i++)
32 {
33 for(int j=1;j<=n2;j++)
34 {
35
36 if(word1[i-1]==word2[j-1])
37 {
38 dp[i][j]=dp[i-1][j-1];
39 }
40 else
41 {
42 dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1;
43 }
44 }
45 }
46
47 int result=dp[n1][n2];
48 for(int i=0;i<n1+1;i++)
49 {
50 delete[] dp[i];
51 }
52
53 return result;
54 }
55 };
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.