华为OD2023(A卷)基础题4【完美走位】

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

基础题4【完美走位】

题目描述
输入一个长度为4的倍数的字符串,字符串中仅包含WASD四个字母。

将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换,如果替换后整个字符串中WASD四个字母出现的频数相同,那么我们称替换后的字符串是“完美走位”。

求子串的最小长度。

如果输入字符串已经平衡则输出0。

输入描述
一行字符表示给定的字符串s

数据范围:1<=n<=10^5且n是4的倍数,字符串中仅包含WASD四个字母。

输出描述
一个整数表示答案

用例
在这里插入图片描述

输入 WASDAASD
输出 1
说明 将第二个A替换为W,即可得到完美走位
输入 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的子串,来替换为S。

WWWWAAAASSSS

WWWWAAAASSSS

WWWWAAAASSSS

WWWWAAAASSSS

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

本题其实就是求最小覆盖子串,同LeetCode - 76 最小覆盖子串

解题思路
遍历输入字符串,统计每个字符(W、A、S、D)出现的次数。
使用滑动窗口Q方法,从左到右遍历字符串,根据当前窗口内字符的数量计算需要替换的字符数量。如果当前窗口内字符可以通过替换达到平衡,则尝试更新最小长度。

代码实现
Java代码实现

import java.util.*;

public class Main {
   
   
    static int minT = 1000000;
    static String walk;
    static int w,s,a,d,avg;
    public static void main(String[] args) {
   
   
        //walk =  "AAAA";
         Scanner scanner = new Scanner(System.in)
华为OD机试真 2023 B + 2023 C&D JAVA&JS&Python&C++) 本栏包含了华为OD机试真2022Q4 A + 2023 B的全部机试真 阅读详情

相关推荐

【满分】【华为OD机试真2023 JAVA&JS】获得完美走位

获得完美走位 时间限制:1s空间限制:256MB限定语言:不限 目描述:在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位

qq_34465338的博客 5990

js base64编码格式图片另存为下载

js base64编码格式图片另存为下载

gaxing4615的博客 3万+

2026华为OD机试(JavaScript)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,JavaScript实现。

MISAYAONE的博客 8万+

Pictures of Ascii Art

简述 指尖上的艺术 - 通过键盘上韵律般的敲敲打打,一幅幅美轮美奂的艺术作品便跃然于屏。 这样的画作,包含了无穷的创意,糅合了现代计算机科技与传统绘画艺术,难道还有比这更令人陶醉的美妙事物吗? 简述 天使 异形 动物 婴儿 鸟类和昆虫 生日 建筑 卡通 服饰 电脑 几何图形 万圣节 岛屿 Love 情侣 男人 机器人 骷髅 运动 文本 运输 卡车 名人 女人 其它 更...

weixin_30835649的博客 860

华为OD机试真---获得完美走位

在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位为“完美走位”。现给定玩家的走位(例如:ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个“完美走位”。其中待更换的连续走位可以是相同长度的任何走位。请返回待更换的连续走位的最小可能长度。如果原走位本身是一个“完美走位”,则返回

风信子的博客 1639

华为OD机试真——完美走位(2025B:100分)Java/python/JavaScript/C++最佳实现

华为OD机试真——完美走位(2025B:100分)Java/python/JavaScript/C++最佳实现

专注分享技术、实用优质教程、资源 1054

2026华为OD机试(C语言)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,C语言实现。

MISAYAONE的博客 11万+

2026华为OD机试(Python)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,Python实现。

MISAYAONE的博客 28万+

2026华为OD机试(C++)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,C++实现。

MISAYAONE的博客 20万+

华为OD机试模拟】用 C++ 实现 - 获得完美走位2023.Q1)

假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位完美走位。参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。其中待更换的连续走位可以是相同长度的任何走位。请返回待更换的连续走位的最小可能长度。若果原走位本身是一个完美走位,则返回。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 4094

华为OD机试,用 Java 解【获得完美走位】问

本篇目:获得完美走位 目 在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。 假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位完美走位。 现给定玩家的走位(例如:ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。 其中待更换的连续走位可以是相同长度的任何走位。 请返回待更换的连续走位的最小可能长度。 若果原走

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 5797

华为OD机试真2023JavaScript)

华为机试有三道目,第一道和第二道属于简单或中等,分值为100分,第三道为中等或困难,分值为200分。总分为400分,150分钟考试时间。之前通过为150分,现在好像分数提高了,大家不要太大意,一定要多刷,争取拿高分,毕竟分数越高评级越高,工资也就越高。

weixin_40767375的博客 9779

华为OD机试Golang解 - 获得完美走位

假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位完美走位。如果想要在华为od机试中获取高分,一定要不要完全背诵代码,需要理解之后模仿写出,分数才会高。四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。其中待更换的连续走位可以是相同长度的任何走位。若果原走位本身是一个完美走位,则返回。👍 阅读完毕,可以点点小手赞一下。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 5451

华为OD机试 - 获得完美走位(Python)| 真+思路+代码

获得完美走位 | 华为OD机试 目 在第一人称射击游戏中,玩家通过键盘的 A、S、D、W 四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。 假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位完美走位。 现给定玩家的走位(例如:ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。 其中待更换的连续走位可以是相同长度的任何走位。 请返回待更换的连续走位的最小可能长度

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 4592

华为OD机试 - 获得完美走位(C 语言)【独家】

本期目:获得完美走位 目 在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。 假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位完美走位。 现给定玩家的走位(例如:ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。 其中待更换的连续走位可以是相同长度的任何走位。 请返回待更换的连续走位的最小可能长度。 若果原走

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 5474

华为OD机试真Java实现【得完美走位】真+解思路+代码(2022&2023

在第一人称射击游戏中,玩家通过键盘的ASDW四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。假设玩家每按动一次键盘,游戏人物会向某个方向移动一步,如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人物必定会回到原点,则称此次走位完美走位。ASDA),请通过更换其中一段连续走位的方式使得原走位能够变成一个完美走位。其中待更换的连续走位可以是相同长度的任何走位。请返回待更换的连续走位的最小可能长度。若果原走位本身是一个完美走位,则返回0。

码莎拉蒂 5628

2026华为OD机试(JAVA&Go)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,Java实现。

MISAYAONE的博客 34万+

2023A完美走位

2023A完美走位

我哎GIS博客 277
上一篇: 华为OD2023(A卷)基础题3【箱子之字形摆放】
下一篇: 华为OD2023(A卷)基础题5【模拟商场优惠打折】
大司码
博客等级 码龄10年 18粉丝 · 42原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值