华为OD机考双机位C卷 - 完美走位 (Java & Python & JS & GO & C++ & C)

完美走位

2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷

华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

题目描述

在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。

假设玩家每按动一次键盘,游戏任务会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏任务必定会回到原点,则称此次走位为完美走位。

现给定玩家的走位(例如: ASDA ),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。其中待更换的连续走位可以是相同长度的任何走位。

请返回待更换的连续走位的最小可能长度。

如果原走位本身是一个完美走位,则返回0。

输入描述

输入为由键盘字母表示的走位s,例如: ASDA

说明:

1、走位长度 1 ≤ s.length ≤ 100000(也就是长度不一定是偶数)
2、s.length 是 4 的倍数
3、s中只含有’A’, ‘S’, ‘D’, ‘W’ 四种字符

输出描述

输出为待更换的连续走位的最小可能长度。

示例1

输入

WASDAASD

输出

1

说明

将第二个A替换为W,即可得到完美走位

示例2

输入

AAAA

输出

3

说明

将其中三个连续的A替换为WSD,即可得到完美走位

解题思路## 分析

完美走位是上下左右的次数一样的。如果不一样,我们需要在给定的走位中,找到一个 连续的字串 ,替换走位,是的走位完美。

题目要求,保持W,A,S,D字母个数平衡,即相等,如果不相等,可以从字符串中选取一段连续子串替换,来让字符串平衡。

比如: WWWWAAAASSSS

字符串长度12,W,A,S,D平衡的话,则每个字母个数应该是3个,而现在W,A,S各有4个,也就是说各超了1个。

因此我们应该从字符串中, 选取一段包含1个W,1个A,1个S的子串 ,来替换为D。

WWWWAAAASSSS

而符合这种要求的子串可能很多,我们需要找出其中最短的,即 **WAAAAS**

posted @ 2026-03-10 11:58  华为od算法大师  阅读(2)  评论(0)    收藏  举报