给定两个字符串,已知可以使用三种方式进行变换
1. 插入一个字符
2. 删除一个字符
3. 更改一个字符
请设计一个算法,找到两个字符串之间的经历几次最小变换,可以字符串1转换成字符串2// 假定变换规则是 1. 串1长度大于串2的时候,删除字符// 2. 串1长度小于串2的时候,添加字符// 3. 串1长度等于串2的时候,替换字符// 如果仅仅是这种思路,那么只能通过50%。。。
var change=readline().split('');
var old=readline().split('');
function dp(old,mynow){// 四种情况
let old_len=old.length;
let now_len=mynow.length;// 跳过,看下一个数// 插入,删除,更改
let ins_spl=mynow.slice(0,now_len-1);
let del_spl=old.slice(0,old_len-1)
let ins_old=old.slice(0,old_len)
let del_now=mynow.slice(0,now_len)// 结束条件: 1. 如果数字一致,那么后面两个数不用改变if(now_len==1&&old_len==1&&old[0]==mynow[0]){return0}elseif(now_len==1||old_len==1){// 2. 否则改变一次才可以return1}if(mynow[now_len-1]==old[old_len-1]){returndp(del_spl,ins_spl)}else{return1+Math.min(dp(ins_old,ins_spl),dp(del_spl,del_now),dp(del_spl,ins_spl))}}
console.log(dp(old,change))