計算字串編輯距離
計算字串編輯距離
題目描述:給定兩個字串,要求二者之間的編輯距離。
分析:字串的編輯主要有三種方式:增加、刪除和修改。這道題目按照遞迴的方式,逐個判斷每個字元。具體而言,如果str1和str2的第一個字元相等,則往後移,編輯的距離為後續的字串;如果第一個不等,則我們可以增加、刪除和修改str1,也可以增加、刪除和修改str2,還可以同時增加、刪除和修改str1和str2。不管以何種方式修改哪一個字串,這個編輯距離都+1.
程式碼如下:
#include<iostream>
#include<string>
using namespace std;
int stringEditDistance(string str1, int begin1, int end1, string str2, int begin2, int end2)
{
if(begin1 > end1)
{
if(begin2 > end2)
return 0;
else
return end2 - begin2 + 1;
}
if(begin2 > end2)
{
if(begin1 > end1)
return 0;
else
return end1 - begin1 + 1;
}
if(str1[begin1] == str2[begin2])
{
return stringEditDistance(str1, begin1+1, end1, str2, begin2+1, end2);
}
else
{
int dis1 = stringEditDistance(str1, begin1+1, end1, str2, begin2+2, end2);
int dis2 = stringEditDistance(str1, begin1+2, end1, str2, begin2+1, end2);
int dis3 = stringEditDistance(str1, begin1+2, end1, str2, begin2+2, end2);
if(dis1 <= dis2 && dis1 <= dis3)
return dis1 + 1;
if(dis2 <= dis1 && dis2 <= dis3)
return dis2 + 1;
if(dis3 <= dis2 && dis3 <= dis1)
return dis3 + 1;
}
}
int main()
{
string str1 = "ABCDE";
string str2 = "ADBBDE";
cout<<stringEditDistance(str1, 0, str1.length(), str2, 0, str2.length())<<endl;
return 0;
}
參考:
《程式設計之美》
相關文章
- Levenshtein:計算字串的編輯距離字串
- 字串編輯距離問題詳解字串
- 編輯距離及編輯距離演算法演算法
- 【DP】編輯距離
- 【leetcode】72. Edit Distance 編輯距離計算LeetCode
- Vijos1680距離/openjudge2988計算字串的距離[DP]字串
- 編輯距離演算法演算法
- 線性dp:編輯距離
- 動態規劃-編輯距離動態規劃
- 最短編輯距離演算法演算法
- 902.最短編輯距離
- 空間距離計算
- 面試程式碼題(華為)編輯距離面試
- LeetCode72編輯距離LeetCode
- 程式設計之美leetcode之編輯距離程式設計LeetCode
- Java LeetCode 72. 編輯距離JavaLeetCode
- 28、(向量)歐幾里得距離計算
- RecyclerView滑動距離計算View
- 字串相似度演算法(編輯距離演算法 Levenshtein Distance)(轉)字串演算法
- PostgreSQL遺傳學應用-矩陣相似距離計算(歐式距離,…XX距離)SQL矩陣
- 怎樣衡量兩個字串的相似度(編輯距離動態規劃求解)字串動態規劃
- 演算法——動態規劃演算法求解字串的編輯距離演算法動態規劃字串
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- RQNOJ 514 字串距離:dp & 字串字串
- 【動態規劃】字串最小編輯距離Java實現動態規劃字串Java
- PyTorch 實戰:計算 Wasserstein 距離PyTorch
- Redis計算地理位置距離-GeoHashRedis
- 1062. 計算曼哈頓距離
- 地理空間距離計算優化優化
- 洛谷 1279 字串距離字串
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 經緯度互換和計算距離
- JAVA計算兩經緯度間的距離Java
- 計算地圖中兩點之間的距離地圖
- 微信小程式——計算2點之間的距離微信小程式
- 2014年亞馬遜線上筆試題目及解法_9_24(字串編輯距離升級版)亞馬遜筆試字串
- java文字相似度計算(Levenshtein Distance演算法(中文翻譯:編輯距離演算法))----程式碼和詳解Java演算法
- 百度地圖計算兩座標點之間距離計算地圖