105. 华为OD-两个字符串间的最短路径问题(200分)

难度 5
  • 标签:
  • 华为OD真题200分题型
题目描述
题解
题库

华为OD-两个字符串间的最短路径问题(200分)

题目内容

给定两个字符串,分别为字符串 AA 与字符串 BB

例如 AA 字符串为 "ABCABBA",BB 字符串为 "CBABAC",可以得到下图 m×nm \times n 的二维数组,定义原点为 (0,0)(0,0),终点为 (m,n)(m,n),水平与垂直的每一条边距离为 11,映射成坐标系如下图。

从原点 (0,0)(0,0)(0,A1)(0,A_1) 为水平边,距离为 11,从 (0,A1)(0,A_1)(1,C1)(1,C_1) 为垂直边,距离为 11

假设两个字符串同一位置的两个字符相同,则可以作一个斜边,如 (1,C1)(1,C_1)(2,B1)(2,B_1) 最短距离为斜边,距离同样为 11

作出所有的斜边如下图,(0,0)(0,0)(Bk,Bk)(B_k,B_k) 的距离为:11 个水平边 ++ 11 个垂直边 ++ 11 个斜边 =3= 3

image

根据定义可知,原点到终点的最短距离路径如下图红线标记,最短距离为 99

image

输入描述

空格分割的两个字符串 AA 与字符串 BB

  • 字符串不为"空串"
  • 字符格式满足正则规则:[AZ][\text{A}-\text{Z}]
  • 字符串长度 <10000<10000

输出描述

原点到终点的最短距离

样例1

输入

ABC ABC

输出

3

样例2

输入

ABCABBA CBABAC

输出

9