Print Shortest Path to Print a String On Screen Using Java

2025 年 3 月 31 日 | 阅读 3 分钟

假设屏幕上显示着 A-Z 这 26 个字母,您需要使用遥控器上的方向按钮(左、右、上、下)在字符之间进行导航。目标是找到输入给定字符串的最短路径,从左上角开始。字符串中的每个字符都应按顺序输入,遵循最高效的路线。

示例

输入: "HELLO"

输出

 
Move Down
Move Right
Move Right
Press OK
Move Down
Move Down
Press OK
Move Left
Move Left
Press OK
Move Down
Press OK   

方法:贪婪遍历

此代码中的贪婪方法涉及在每一步都做出最佳可能选择,通过调整行和列位置直接导航到目标字符。它的目标是通过始终选择最直接的路线来到达目标字符,从而减少操作次数。

算法

步骤 1: 从遥控器的左上角开始,即位置 (0, 0),对应字母 'A'。

步骤 2: 初始化 变量 来跟踪当前行和列,并使用一个索引来迭代输入字符串中的字符。

步骤 3: 遍历输入 字符串,按顺序处理每个字符。

步骤 4: 对于每个字符,根据其在网格中的字母顺序计算其目标行和列。

步骤 5: 比较当前行与目标行

  • 如果当前行在目标行的上方,则逐行向下移动,直到对齐为止,打印“向下移动”。
  • 如果当前行在目标行的下方,则逐行向上移动,直到对齐为止,打印“向上导航”。

步骤 6: 行对齐后,调整列

  • 如果当前列在目标列的右侧,则逐列向左移动,打印“向左移动”。
  • 如果当前列在目标列的左侧,则逐列向右移动,打印“向右导航”。

步骤 7: 到达目标位置(所需字符所在的位置)后,打印“确认选择”以模拟按下 OK 按钮。

  • 通过递增索引继续处理下一个字符,并重复此过程,直到输入的所有字符串都已输入。

实施

文件名:RemoteNavigator.java

输出

 
Move Downward
Navigate Rightward
Navigate Rightward
Confirm Selection
Navigate Upward
Navigate Rightward
Navigate Rightward
Confirm Selection
Move Leftward
Move Leftward
Move Leftward
Move Downward
Move Downward
Confirm Selection
Confirm Selection
Navigate Rightward
Navigate Rightward
Navigate Rightward
Confirm Selection   

下一个主题Java 堆栈跟踪