华为OD机试 - 完美走位(Python)

2023-10-27

完美走位
题目描述:
输入一个长度为4的倍数的字符串,字符串中仅包含WASD四个字母。
将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换Q,如果替换后整个字符串中WASD四个字母出现的频数相同,那么我们称替换后的字符串是“完美走位”。求子串的最小长度。
如果输入字符串已经平衡则输出0。
二、输入一行字符表示给定的字符串s 
数据范围:
1<=n<=10^5且n是4的倍数,字符串中仅包含WASD四个字母。
三、输出一个整数表示答案
四、样例输入输出示例1:
输入:WASDAASD 
输出:1 
说明:
将第二个A替换为W,即可得到完美走位。
示例2:输入:AAAA 
输出:3 
说明:
将其中三个连续的A替换为WSD,即可得到完美走位
借鉴优化了【完美走位】_笑着的程序员的博客-CSDN博客的思路


minT=1000000
walk=input()
avg=len(walk)/4
w=max(walk.count("W")-avg,0)
s=max(walk.count("S")-avg,0)
a=max(walk.count("A")-avg,0)
d=max(walk.count("D")-avg,0)



def solveP():
    if(w==s==d==a):#完美情况
        return 0

    print(containstr(0,int(w+s+a+d-1),minT))



def containstr(head:int,tail:int,minT:int):
    if(tail> len(walk)):
        return minT#越界即结束
    if(walk[head:tail].count("A")>=a and walk[head:tail].count("S")>=s and walk[head:tail].count("W")>=w and walk[head:tail].count("D")>=d):#我们只需要考虑多余的wasd数量即可
        minT=min(tail-head,minT)#更新minT
        return containstr(head+1,tail,minT)#右边框右滑
    else:
        return containstr(head,tail+1,minT)#左边框右滑

solveP()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD机试 - 完美走位(Python) 的相关文章

随机推荐

  • C#如何调用外部exe程序

    http blog csdn net cyamazing article details 52849106 1 在主界面添加调用外部exe程序的Button 双击此Button进入代码编辑页面 在程序的开始using System Diag
  • OpenCV阈值处理(threshold函数、自适应阈值处理、Otsu处理)

    目录 阈值处理 一 threshold函数 1 二值化阈值处理 cv2 THRESH BINARY 2 反二值化阈值处理 cv2 THRESH BINARY INV 3 截断阈值化处理 cv2 THRESH TRUNC 4 超阈值零处理 c
  • 刷脸支付能够很好的解决扫码支付的弊端

    刷脸支付设备采用的是目前安全系数最高的3D结构光摄像头技术 使用毫米级景深信息检测 在用户第一次使用时 就通过光感点阵 采集了用户独一无二的生物身份信息 然后与实名认证后的支付宝账号相连 来达到安全支付的效果 也就是说 就算不法分子拿着我们
  • cpp在vector中查找find元素

    假如我有一个vector数组 需要查询某个数是否在数组中 某个数在数组中第一次出现的位置 这个时候就需要用到
  • Python——UDP Socket实现视频互传,远程调用另一台电脑摄像头(cv2)

    一台电脑当服务器多线程提供摄像头服务 支持多台电脑调用 目录 一台电脑当服务器多线程提供摄像头服务 支持多台电脑调用 一 效果展示 和舍友联机 多台电脑效果 二 带注释的代码 1 服务端 2 客户端 一 效果展示 和舍友联机 多台电脑效果
  • 力扣刷题 每日两题(一)

    一 力扣20题 class Solution object def isValid self s type s str rtype bool if len s 0 return True stack for c in s if c or c
  • FISCO-BCOS 一、默认配置搭建区块链网络

    一 采用默认配置搭建区块链网络 1 安装openssl ubuntu依赖 sudo apt install y openssl curl 2 创建操作目录 下载安装脚本 cd mkdir p fisco cd fisco 3 搭建单群组4节
  • 面试分享

    在软件测试的面试过程中 经常会出一些测试基础的问题 以此来评估应聘者的基本测试功底和知识储备 下面我就为大家整理了一些软件测试常见面试题及答案 仅供参考 之前的推文也有分享过相关的软件测试面试题 正在准备面试的小伙伴们可以进入本公众号 面试
  • flutter内存泄漏常见分析

    内存泄漏是Flutter中的一个常见问题 以下是一些可能导致内存泄漏的情况和注意事项 未释放控制器 在使用一些控制器 如AnimationController TextEditingController等 时 需要在不需要时及时释放控制器
  • 创建线程的方式打开记事本

    更好的阅读体验 huge color red 更好的阅读体验 更好的阅读体验 今天操作系统课老师讲到进程 提出了一个有趣的小实验 能否以系统调用的方式利用 Windows 创建进程的系统调用函数来打开一个软件 闲着蛋疼的我立马来了兴趣 姑且
  • unity开发VR,没有VR设备解决方式

    文章目录 前言 一 环境搭建 1 普通VR环境搭建 2 虚拟相机搭建 二 模拟相机的操作 总结 前言 开发实例环境为unity2018 4 11 VRTK3 3 0 steamVR1 2 23 当我们身边没有HTC VIVE设备时我们不能去
  • Android Studio中的mavenCentral、jcenter、google仓库

    一 Android Studio中依赖是从哪里得到 是从工程的build gradle里面定义的Maven仓库服务器去下载library的 总的来说 只有两个标准的Android library文件服务器 mavenCentral和jcen
  • AES加密和解密详解

    本文使用的是cyrpto js库 以AES CBC为例 先安装cyrpto js cyrpto js是js专门用来加密和解密用到的一个库 第一步 先确认一下电脑是否有node和npm 输入node version显示 v 版本号就可以下一步
  • RPMB分区介绍

    RPMB Replay Protected Memory Block重放保护内存块 Partition 是 eMMC 中的一个具有安全特性的分区 eMMC 在写入数据到 RPMB 时 会校验数据的合法性 只有指定的 Host 才能够写入 同
  • Java之解压Tar.gz和Gz文件到指定的目录下

    工作中的需求 需要读取指定路径下的压缩文件 然后解压到指定的目录下 引入maven依赖
  • msvcp140.dll丢失的4个解决方法,msvcp140.dll丢失的常见原因

    msvcp140 dll是Windows操作系统中的一个动态链接库文件 由Microsoft Visual C 程序库所提供 它包含了许多C 函数和类的定义 可以为应用程序提供一些基本服务 比如内存管理 文件输入 输出和网络连接等功能 我们
  • phpstorm表单递交post出错get正确的解决方法

    好吧 这是我第二次因为这个问题搞得凌晨才睡觉 这次一定要记录下来 phpstorm版本2016 1 1 问题详细描述 在html写好表单之后以post方式递交给php文件 返回结果在谷歌浏览器是 Automatically populati
  • Allegro如何做镂空丝印操作指导

    Allegro如何做镂空丝印操作指导 在PCB设计丝印的时候 会需要画镂空的丝印 Allegro升级到了172版本的时候 可以画镂空的丝印 如下图 具体操作如下 选择Shape Add Rect命令 Options选择需要画到的层面 比如S
  • nginx文档合集

    1 nginx documentation 2 14个Nginx的核心功能点 建议收藏 3 Nginx之负载均衡模块 ngx http upstream module 途径日暮不赏丶的博客 CSDN博客 4 tomcat redis ses
  • 华为OD机试 - 完美走位(Python)

    完美走位 题目描述 输入一个长度为4的倍数的字符串 字符串中仅包含WASD四个字母 将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换Q 如果替换后整个字符串中WASD四个字母出现的频数相同 那么我们称替换后的字符串是 完美走位