LeetCode刷题14-5键键盘的输出

package com.example.demo.leetcode.case202208;

import java.util.Scanner;

/**
 * 功能描述
 *
 * @author ASUS
 * @version 1.0
 * @Date 2022/8/6
 */
public class Main2022080610 {
    /*
     标题:5键键盘的输出
    【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、ctrl-a当有字母被选择时,a和ctrl-v这两个有输出功能的键会先清空选择的字母,再进行输出
     给定一系列键盘输入,输出最终屏幕上字母的数量。
     输入描述:
     输入为一行,为简化解析,用数字 12345代表 a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键的输入,数字用空格分隔
     输出描述:
     输出一个数字,为最终屏目上字母的数量。
     示例1:
     输入
     1 1 1
     输出
     3
     说明
     连续键入3个a,故屏幕上字母的长度为3

     示例2:
     输入
     1 1 5 1 5 2 4 4
     输出
     2
     说明
     输入两个a后ctrl-a选择这两个a,再输入a时选择的两个a先被清空,所以此时屏幕只有一个a,后续的ctrl-a,ctrl-c选择并复制了这一个a,
     最后两个ctrl-v在屏幕上输出两个a,故屏幕上字母的长度为2(第一个ctrl-v清空了屏幕上的那个a)
     */
    public static void main(String[] args) {
        // 获取输入信息 用数字 12345代表 a,ctrl-c,ctrl-x,ctrl-v,ctrl-a
        Scanner scanner = new Scanner(System.in);
        String[] strings = scanner.nextLine().split(" ");
        // 记录屏幕字符串
        StringBuilder screen = new StringBuilder();
        // 剪切板中的元素
        String tempStr = "";
        // 标识选中
        boolean bool = false;
        for (int i = 0; i < strings.length; i++) {
            String currentOpt = strings[i];
            // 输出字母 a
            // 选中 + 输出字母
            if (currentOpt.equals("1") && bool) {
                screen = new StringBuilder();
                screen.append("a");
                bool = false;
            }
            // 未选中 + 输出字母
            if (currentOpt.equals("1") && !bool) {
                screen.append("a");
            }
            // 拷贝 + 选中的
            if (currentOpt.equals("2") && bool) {
                tempStr = screen.toString();
            }
            // 剪切 + 选中的
            if (currentOpt.equals("3") && bool) {
                tempStr = screen.toString();
                screen = new StringBuilder();
                bool = false;
            }
            // 粘贴剪切板中的信息 + 选中的
            if (currentOpt.equals("4") && bool) {
                screen = new StringBuilder();
                screen.append(tempStr);
            }
            // 粘贴剪切板中的信息 + 选中的
            if (currentOpt.equals("4") && !bool) {
                screen.append(tempStr);
            }

            // 选中所有字母
            if (currentOpt.equals("5")) {
                tempStr = screen.toString();
                // 标识选中
                bool = true;
            }
        }

        // 打印
        System.out.println(screen.length());
    }
}

  

 

posted @ 2022-08-06 22:10  chch213  阅读(165)  评论(0编辑  收藏  举报