計算字串編輯距離
計算字串編輯距離
題目描述:給定兩個字串,要求二者之間的編輯距離。
分析:字串的編輯主要有三種方式:增加、刪除和修改。這道題目按照遞迴的方式,逐個判斷每個字元。具體而言,如果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:計算字串的編輯距離字串
- 【leetcode】72. Edit Distance 編輯距離計算LeetCode
- 編輯距離及編輯距離演算法演算法
- 【DP】編輯距離
- 編輯距離演算法演算法
- LeetCode72編輯距離LeetCode
- 線性dp:編輯距離
- 902.最短編輯距離
- 動態規劃-編輯距離動態規劃
- Java LeetCode 72. 編輯距離JavaLeetCode
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- 怎樣衡量兩個字串的相似度(編輯距離動態規劃求解)字串動態規劃
- 面試程式碼題(華為)編輯距離面試
- PyTorch 實戰:計算 Wasserstein 距離PyTorch
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 28、(向量)歐幾里得距離計算
- JAVA計算兩經緯度間的距離Java
- 資料對齊-編輯距離演算法詳解(Levenshtein distance)演算法
- 經緯度距離換算
- 單詞拼寫糾正-05-2452.力扣 距離字典兩次編輯距離以內的單詞力扣
- 計算地圖中兩點之間的距離地圖
- IBM量子計算機亮相 距離標準量子計算機相距甚遠IBM計算機
- 演算法:編輯距離問題(動態規劃,詳細解答)演算法動態規劃
- 微信小程式——計算2點之間的距離微信小程式
- 透過經緯度計算距離獲取附近商家
- 計算幾何 —— 二維幾何基礎 —— 距離度量方法
- Python 計算多少天前後、距離 X日多久的日期Python
- 通過sql 計算兩經緯度之間的距離SQL
- C語言:使用函式計算兩點間的距離C語言函式
- 最小距離分類器,互動式選取影像樣本分類資料,進行最小距離分類(實現歐式距離,馬氏距離,計程距離)
- 馬氏距離與歐氏距離
- 常見問題01:計算地球上兩個點的距離
- 單詞拼寫糾正-04-161.力扣 相隔為 1 的編輯距離力扣
- 【Python】距離Python
- 根據經緯度計算兩點之間的距離的公式公式
- 根據兩點經緯度計算距離和角度——java實現Java
- 我們可能會遇到的距離量算方法
- JavaScript 元素距離視窗頂部的距離JavaScript
- java 經緯度處理、計算兩地的距離、獲取當前一定距離以內的經緯度值Java