首页 > 编程语言 >赛码网编程题--打字(Java全A)

赛码网编程题--打字(Java全A)

时间:2023-09-27 19:46:21浏览次数:43  
标签:int Java -- big 小写字母 赛码 字母键 shift small

题目描述
小明很喜欢打字,今天小红给了小明一个字符串。这个字符串只包含大写和小写字母。 我们知道,按下CapsLock键,可以切换大小写模式。我们在小写模式时候,同时按下shift+字母键,就能写出大写字母。在大写模式的时候,按下shift+字母键,就能写出小写字母。现在问题来了,给你一个字符串,问你最少使用多少个按键,就可以写出这个字符串呢?注意,按shift和字母键,算两次按键。开始时均为小写状态。

输入描述
第一行一个T,表示有T组输入。
接下来T组数据:
每组数据一个字符串s,s的长度小于等于100。仅包含大小写字母。

输出描述
对于每组数据,输出最少按键次数。

样例输入

3
A
AA
AAAAAA

样例输出

2
3
7

解题思路

  • 用变量small表示键入当前字符后并保持输入状态为小写字母,所需的最小次数。若当前字符为大写,则新的small应从(旧的small + 1次shift键 + 1次字母键)和(旧的big + 1次CapsLock键 + 1次字母键)中取较小值。其他情况依次类推。
  • 用变量big表示键入当前字符后并保持输入状态为大写字母,所需的最小次数。

代码

import java.util.*;

class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.nextLine());
    for (int i = 0; i < n; i++) {
      String str = sc.nextLine();
      int len = str.length();
      //初始状态为小写字母,故big为1
      int small = 0, big = 1;
      for (int j = 0; j < len; j++) {
        char c = str.charAt(j);
        if (c >= 'A' && c <= 'Z') {
          int val1 = Math.min(small + 2, big + 2);
          int val2 = Math.min(small + 2, big + 1);
          small = val1;
          big = val2;
        }
        else {
          int val1 = Math.min(small + 1, big + 2);
          int val2 = Math.min(small + 2, big + 2);
          small = val1;
          big = val2;
        }
      }
      System.out.println(Math.min(small, big));
    }
  }
}

标签:int,Java,--,big,小写字母,赛码,字母键,shift,small
From: https://www.cnblogs.com/mqDliaolei/p/17734143.html

相关文章

  • 9.27(读后感2)
    今天上午去上了英语提升课下午再宿舍看了程序员修炼之道的第三章还补全了一部分出题系统的代码,再b站上看了如何用Java实现文件的存入与导出。读后感:在阅读完第三章之后,我深深地感受到了编程不仅仅是一种技术,更是一种艺术,一种哲学。这一章主要阐述了软件工艺的重要性,其中......
  • 十年耕耘,致力于让垂直领域合作企业提升竞争力
    不知不觉,入住博客园已经17年零10个月了。最开始知道博客园还是2006年参加北京Tech.ed2006微软技术大会(我还写了一篇场记)。大会三天两晚,也就是在晚上住宿的时候,见到一个那个时候还很清瘦的年轻人,听别的MVP说,那就是博客园的创始人杜勇同学。后来和博客园最接近的一次是,2018年去云溪......
  • 结对项目壹(曾宇帆、陈年)
    -1作业概述|这个作业属于哪个课程|《软件工程》||----|----||这个作业要求在哪里|结对项目-作业-计科21级34班-班级博客-博客园(cnblogs.com)||这个作业的目标|实现一个自动生成小学四则运算题目的命令行程序||GitHub链接|https://github.com/guiwuwu/homework-3.git|......
  • Matlab 设计仿真CIC滤波器
    2023.09.26使用CIC滤波器用于降采样。同样的,CIC滤波器也适用于升采样。参考连接:[1]Matlab中CIC滤波器的应用_dsp.cicdecimator_张海军2013的博客-CSDN博客[2]Matlab中CIC滤波器的应用-知乎(zhihu.com)[3]CICfilter及其matlab实现-CSDN博客[4]【ljelly原创】Matla......
  • Idea添加注释模板
    先展示结果具体步骤选择导航栏的File->Settings->Editor->LiveTemplates。点击右边的加号,先创建一个TemplateGroup(名字随意),选中创建的分组,再点击加号创建LiveTemplate。在下方的Abbreviation中设置想使用的快捷键,我这里填的‘*’。Templatetext中填入如下模板......
  • 梦段代码阅读笔记02
    1、对该项目的人的认识不得不承认的一点是,这个项目的基础特别棒,在万众瞩目下开启开发的旅程,历时七年,在完工之际,已经没有人为之喝彩;项目团队人人都很优秀,在我眼里,他们不仅仅是久远时光里的一个出名的项目团队,他们还是独一无二的编程“疯子”,他们热爱编程、享受编程,不屑于将自己......
  • 使用idea自带的反编译工具 [FernFlower]
    终端直接输入命令java-cp参数1org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler-dgs=true参数2参数3参数说明:参数1。IDEA安装目录下的反编译插件“java-decompiler.jar”所在路径,需要加上双引号。示例:"E:\IntelliJIDEA2020.2.2\plugins\java-decomp......
  • 用户端分页查询问题(上)
               ......
  • MYSQL - IF 语句
    背景:求三个字段的和但是其中一个字段有可能是null,相加后结果就是nullselectsum(a+b+c)fromtab;预期:如果sum(a+b+c)为null就不参与运算ifnull:https://blog.csdn.net/weixin_45659364/article/details/115468039......
  • 基本不等式思维导图
    前言使用方法:如果想得到更好的显示效果,可以点击全屏按钮,已经实现电脑端、手机端的适配,效果很好;电视端没有实现适配,Ipad端的适配没有测试;思维导图[全屏/Esc]......