华为OD机试-5键键盘的输出

news/2024/7/20 19:58:16 标签: 算法, 华为od, 华为机试, python

 题目描述


【5键键盘的输出】有一个特殊的 5键键盘,上面有 a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。
a键在屏幕上输出一个字母 a;
ctrl-c将当前选择的字母复制到剪贴板;
ctrl-x将当前选择的 字母复制到剪贴板,并清空选择的字母;
ctrl-v将当前剪贴板里的字母输出到屏幕;
ctrl-a 选择当前屏幕上所有字母。
注意:
1、剪贴板初始为空,新的内容被复制到剪贴板时会覆盖原来的内容
2、当屏幕上没有字母时,ctrl-a无效
3、当没有选择字母时,ctrl-c和 ctrl-x无效
4、当有字母被选择时,a和ctrl-v这两个有输出功能的键会先清空选择的字母,再进行输出
给定一系列键盘输入,输出最终屏幕上字母的数量。
输入描述:
输入为一行,为简化解析,用数字 12345代表 a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键的输入,数字用空格分隔
输出描述:
输出一个数字,为最终屏目上字母的数量。
示例:
输入
111
输出
3

代码实现

python"># coding:utf-8

class Solution:
    def keyBoard(self, s):
        screen = ''
        clip = ''
        selected = False

        for i in s:
            if i == '1' and not selected:
                screen += 'a'
            elif i == '1' and selected:
                screen = 'a'
                selected = False
            elif i == '2' and selected and screen:
                clip = screen
            elif i == '3' and selected and screen:
                clip = screen
                screen = ''
                selected = False
            elif i == '4' and selected:
                screen += clip
                selected = False
            elif i == '5' and screen:
                selected = True
        return len(screen)


if __name__ == '__main__':
    s = input("input:")
    solution = Solution()
    print(solution.keyBoard(s))


http://www.niftyadmin.cn/n/4941117.html

相关文章

前后端分离------后端创建笔记(10)用户修改

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

309 migo过账 demo

DATA goodsmvt_code LIKE bapi2017_gm_code VALUE ‘04’. DATA goodsmvt_header LIKE bapi2017_gm_head_01. DATA materialdocument LIKE bapi2017_gm_head_ret-mat_doc. DATA matdocumentyear LIKE bapi2017_gm_head_ret-doc_year. DATA goodsmvt_item TYPE bapi2017_gm_item…

【LeetCode 算法】Find And Replace in String 字符串中的查找与替换-排序模拟

文章目录 Find And Replace in String 字符串中的查找与替换问题描述:分析代码排序模拟 Tag Find And Replace in String 字符串中的查找与替换 问题描述: 你会得到一个字符串 s (索引从 0 开始),你必须对它执行 k 个替换操作。替换操作以三…

Unity 鼠标控制 UI 放大、缩小、拖拽

文章目录 1. 代码2. 测试场景 1. 代码 using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems;public class UIDragZoom : MonoBehaviour, IDragHandler, IScrollHandler {private Vector2 originalSize;private Vector2 originalPosition;private RectTr…

Spring Boot+Redis 实现消息队列实践示例

Spring BootRedis 实现一个轻量级的消息队列 文章目录 Spring BootRedis 实现一个轻量级的消息队列0.前言1.基础介绍2.步骤2.1. 引入依赖2.2. 配置文件2.3. 核心源码 4.总结答疑 5.参考文档6. Redis从入门到精通系列文章 0.前言 本文将介绍如何利用Spring Boot与Redis结合实现…

Air001外部中断/事件控制器功能

Air001外部中断/事件控制器 ✨对于外部中断,一般单片机基本标配的硬件功能,使用方法也没有什么特别的地方,对于事件控制器,用于停机模式下唤醒单片机功能,但是使用起来很简单,只需配置其引脚模式即可。 🔖目…

解决饿了么ui的对话框缩放和移动

import Vue from "vue";// v-dialogDrag: 弹窗拖拽水平方向伸缩 /** 使用方法* 将以下代码复制到一个js文件中,然后在入口文件main.js中import引入即可;* 给elementUI的dialog上加上 v-dialogDrag 指令就可以实现弹窗的全屏和拉伸了。* 给…

mapbox-gl中mvt、pbf 矢量切片 feature id bug

1.版本:mapbox-gl.js 2.13.0,pbf采用 postgis生成 2.调用矢量切片时,采用如下方法查询矢量切片要素,报错 map.on(mousemove, function(e) { var bbox = [ [e.point.x - 5, e.point.y - 5], [e.point…