题目描述
无
输入描述
输入一个字符串,都是以大写字母组成,每个相邻的距离是 1,
第二行输入一个字符串,表示必过的点。
说明每个点可过多次。
输出描述
经过这些必过点的最小距离是多少
用例
| 输入 | ANTSEDXQOKPUVGIFWHJLYMCRZB |
| 输出 | 28 |
| 说明 | 无 |
题目解析
这个题目是一个路径搜索问题,具体来说,是在一个字符串中寻找一条经过特定字符的最短路径。
输入包括两行字符串。第一行字符串由大写字母组成,每个字符可以看作是一个点,相邻字符之间的距离为1。第二行字符串指定了一些必须经过的点(字符)。
题目要求找出一条路径,这条路径必须经过所有在第二行字符串中指定的点,而且总距离要尽可能的小。注意,每个点可以经过多次,但在计算总距离时,每次经过都会计算其距离。
例如,输入为:
ANTSEDXQOKPUVGIFWHJLYMCRZB
ABC
输出为:
28
解释:在第一个字符串中,字母A的位置是0,字母B的位置是25,字母C的位置是24。所以,经过这些必过点的最小距离是 |0-25| + |25-24| = 28。
DFS (深度优先搜索) 是一种用于遍历或搜索图或树的算法。它通过从起始节点开始,沿着一条路径尽可能深入地探索,直到无法继续为止,然后回溯到前一步选择其他路径继续探索,直到遍历完所有可能的路径。
对于题目,我们需要找到经过指定的必过点的最小距离。下面是解题思路:
-
首先,我们需要构建一个映射表
mustCharIdx,用于存储每个必过点在字符串all中的索引位置。映射表的键是必过点的字符,值是一个列表,存储该字符在all中出现的索引位置。 <

华为OD机试B卷要求找出一条经过特定字符的最短路径。题目描述中指出,输入是两个字符串,分别表示地图和必经点,输出是最小距离。解题思路涉及深度优先搜索(DFS),通过递归函数计算经过所有必经点的最短路径。提供了解答代码示例(C++, Java, JavaScript, Python)。"
50074445,5572861,Spring Security CSRF防御与Ajax整合应用,"['Spring Security', 'Web安全', 'Ajax开发', 'CSRF防护', 'Java Web']
订阅专栏 解锁全文
602

被折叠的 条评论
为什么被折叠?



