题目描述:

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

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

求子串的最小长度。

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

输入

一行字符表示给定的字符串s

数据范围:

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

输出

一个整数表示答案

示例1:

输入:

WASDAASD

输出:

1

说明:

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

示例2:

输入:

AAAA

输出:

3

说明:

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

个人解法

不保证通过率

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;/****/
public class 完美走位 {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String input = br.readLine();char[] items = input.toCharArray();Arrays.sort(items);String s = new String(items);char[] c = new char[]{'A', 'D', 'S', 'W'};int numA = !s.contains("A") ? 0 : s.lastIndexOf("A") + 1;int numD = !s.contains("D") ? 0 : s.lastIndexOf("D") + 1 - numA;int numS = !s.contains("S") ? 0 : s.lastIndexOf("S") + 1 - numD - numA;int numW = s.length() - numA - numD - numS;int[] nums = new int[]{numA, numD, numS, numW};int head = 0, tail = 0;int mid = (numA + numD + numS + numW) / 4;HashMap<Character, Integer> need = new HashMap<>();HashMap<Character, Integer> tmp = new HashMap<>();for (int i = 0; i < 4; i++) {need.put(c[i], nums[i] > mid ? nums[i] - mid : 0);tmp.put(c[i], 0);}items = input.toCharArray();int min = items.length;while (head < items.length) {if (tmp.get('A') >= need.get('A') &&tmp.get('D') >= need.get('D') &&tmp.get('S') >= need.get('S') &&tmp.get('W') >= need.get('W')) {tmp.put(items[head], tmp.get(items[head]) - 1);if (tail - head < min) {min = tail - head;}head++;} else {if (tail == items.length - 1) {break;}tmp.put(items[tail], tmp.get(items[tail]) + 1);tail++;}}System.out.println(min);}
}

华为OD机试真题 Java 实现【完美走位】【2022.11 Q4】相关推荐

  1. 【华为OD机试真题 python】完美走位【2022 Q4 | 100分】

    ■ 题目描述 [完美走位] 在第一人称射击游戏中,玩家通过键盘的A.S.D.W四个按键控制游戏人物分别向左.向后.向右.向前进行移动,从而完成走位. 假设玩家每按动一次键盘,游戏人物会向某个方向移动一 ...

  2. 华为OD机试真题 Java 实现【二维伞的雨滴效应】【2023 B卷 100分】,附详细解题思路

    目录 一.题目描述 二.输入描述 三.输出描述 四.解题思路 五.Java算法源码 六.效果展示 1.输入 2.输出 3.说明 大家好,我是哪吒. 做技术,我是认真的,立志于打造最权威的华为OD机试真 ...

  3. 【华为OD机试真题 JAVA】热点网站统计

    JS版:[华为OD机试真题 JS]热点网站统计 标题:热点网站统计 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 企业路由器的统计页面,有一个功能需要动态统计公司访问最多的网页 ...

  4. 【华为OD机试真题 JAVA】找城市

    JS版: [华为OD机试真题 JS]找城市 标题:找城市 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限 一张地图上有n个城市,城市和城市之间有且只有一条道路相连:要么直接相连,要 ...

  5. 【华为OD机试真题 JAVA】九宫格按键输入

    JS版:[华为OD机试真题 JS]九宫格按键输入 标题:九宫格按键输入 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 九宫格按键输入,有英文和数字两个模式,默认是数字模式,数字 ...

  6. 【华为OD机试真题 JAVA】跳格子游戏

    JS版:[华为OD机试真题 JS]跳格子游戏 标题:跳格子游戏 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 地上共有N个格子,你需要跳完地上所有的格子,但是格子间是有强依赖关 ...

  7. 【华为OD机试真题 JAVA】分积木

    JS版:[华为OD机试真题 JS]分积木 标题:分积木 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限 Solo和koko是两兄弟,妈妈给了他们一大堆积木,每块积木上都有自己的重量 ...

  8. 【华为OD机试真题 JAVA】用连续自然数之和来表达整数

    JS版:[华为OD机试真题 JS]用连续自然数之和来表达整数 标题:用连续自然数之和来表达整数 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 一个整数可以由连续的自然数之和来表 ...

  9. 【华为OD机试真题 JAVA】连续出牌数量

    JS版:[华为OD机试真题 JS]连续出牌数量 标题:连续出牌数量 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 有这么一款单人卡牌游戏,牌面由颜色和数字组成,颜色为红.黄.蓝 ...

  10. 【华为OD机试真题 JAVA】数字反转打印

    JS版:[华为OD机试真题 JS]数字反转打印 标题:数字反转打印 | 时间限制:1秒 | 内存限制:262144K | 语言不限 小华是个很有对数字很敏感的小朋友,他觉得数字的不同排列方式有特殊美感 ...

最新文章

  1. 2016抢票软件分享
  2. c语言大作业教室预约管理系统,C语言程序设计——教室管理系统(源代码))
  3. Kali Linux 从入门到精通(十一)–提权
  4. tft_LCD一些引脚极性设置方法:vsync, hsync, VBLANK
  5. 蔡崇信将担任阿里巴巴集团第一组董事
  6. 数据结构上机实践第五周项目3 - 括号的匹配
  7. 无人机倾斜摄影三维建模技术在智慧城市中的应用
  8. 51单片机用c语言在液晶1602上显示汉字,51单片机LCD1602显示汉字(中文)源程序...
  9. 路飞学城python电子书闲鱼_路飞学城-python开发集训-第一章之用户登录作业
  10. 【知识点2】最大公约数与最小公约数
  11. 苹果xr微信连不上服务器,苹果xr微信延迟的解决方法
  12. B Bitwise Exclusive-OR Sequence
  13. 苹果Mac隐藏壁纸在哪里?Mac隐藏壁纸查找教程
  14. 继续教育计算机考试试题,第四批继续教育计算机考试试题.doc
  15. 温哥华菜鸟生活攻略(1)
  16. JAVA_获取正常上班工作日-除去节假日_双休日_加上加班
  17. Eclipse Che安装使用
  18. Spring 依赖注入的理解及三种注入方式
  19. Redis过期删除策略和内存淘汰策略
  20. 百度服务器4月1日维护,2014年4月1日定期维护公告

热门文章

  1. 每日一滴——python之time.sleep()
  2. Flink 入门教程
  3. H5页面微信自动登录,和微信页面自定义分享样式
  4. 浏览器无法访问gitlab.nicky.com解决办法
  5. C-DOCSIS业务流
  6. react(子传父、父传子)
  7. echart显示多组数据
  8. Python序列(包括序列类型和常用操作)
  9. 基于Pygame中Pygame模块的大战外星人
  10. PDF格式分析(六十六) Text 文字——简单字体