/**
*两个字符串,通过删除/添加/修改变为相同的字符串的最少操作
*字符串距离就是:操作+1
*字符串的相似度为(1/操作+1)
* */
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int get_distance(char* left,int l_begin,int l_end, //微软的例子
char* right,int r_begin,int r_end)
{
if(l_begin>=l_end)
{
if(r_begin>=r_end)
return 0;
else
return r_end-r_begin;
}
if(r_begin>=r_end)
{
if(l_begin>=l_end)
return 0;
else
return l_end-l_begin;
}
if(left[l_begin]==right[r_begin])
return get_distance(left,l_begin+1,l_end,
right,r_begin+1,r_end);
else
{
int op1=get_distance(left,l_begin+1,l_end,
right,r_begin+1,r_end);
int op2=get_distance(left,l_begin,l_end,
right,r_begin+1,r_end);
int op3=get_distance(left,l_begin+1,l_end,
right,r_begin,r_end);
int sum=[&]()
{
int mid;
if(op1>=op2)
mid
编程之美-字符串距离
最新推荐文章于 2022-09-28 23:52:59 发布