华为OD E卷(100分)32-字符串分割

server/2024/12/26 3:14:15/

前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

        给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;大小写字母的数量相等时,不做转换。

输入

        输入为两行,第一行为参数K,第二行为字符串S。

输出

        输出转换后的字符串。

示例 

示例1

输入
3
12abc-abCABc-4aB@
输出

12abc-abc-ABC-4aB-@

说明

子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每3个字符一组为abC、ABc、4aB、@,abC中小写字母较多,转换为abc,ABc中大写字母较多,转换为ABC,4aB中大小写字母都为1个,不做转换,@中没有字母,连起来即12abc-abc-ABC-4aB-@

示例2

输入
12
12abc-abCABc-4aB@
输出

12abc-abCABc4aB@

说明

子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每12个字符一组为abCABc4aB@,这个子串中大小写字母都为4个,不做转换,连起来即12abc-abCABc4aB@

题解

Java实现

package huawei.e100;import java.util.Scanner;/**
* @author arnold
* @date 2024年12月21日
* 字符串分割
*/
public class T32 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int index = sc.nextInt();sc.nextLine();String str = sc.nextLine();String res = run(str, index);System.out.println(res);}}static String run(String str, int k) {String[] tmps = str.split("-");StringBuilder sb = new StringBuilder();sb.append(tmps[0]);StringBuilder sb1 = new StringBuilder();for (int i = 1; i < tmps.length; i++) {sb1.append(tmps[i]);}String newStr = sb1.toString();int num = newStr.length()/k +1;for (int i = 0; i < num; i++) {String item = newStr.substring(k*i, Math.min(k*i + k, newStr.length()));int low = 0, up = 0;for (int j = 0; j < item.length(); j++) {if(item.charAt(j) >= 'a' && item.charAt(j) <= 'z') {low ++;} else if(item.charAt(j) >= 'A' && item.charAt(j) <= 'Z') {up ++;}}if (up > low) {sb.append("-").append(item.toUpperCase());} else if (up == low) {sb.append("-").append(item);} else {sb.append("-").append(item.toLowerCase());}}return sb.toString();}}


http://www.ppmy.cn/server/152835.html

相关文章

【Java基础面试题035】什么是Java泛型的上下界限定符?

回答重点 Java泛型的上下界限定符用于对泛型类型参数进行范围限制&#xff0c;主要有上界限定符和下届限定符。 1&#xff09;上界限定符 (? extends T)&#xff1a; 定义&#xff1a;通配符?的类型必须是T或者T的子类&#xff0c;保证集合元素一定是T或者T的子类作用&…

榆能横山煤电厂及周边建筑物爆破振动和位移自动化监测

1. 项目概述 本次项目位于陕西省榆林市横山县波罗镇&#xff0c;陕西榆林能源集团横山煤电一体化发电工程二期机组项目地。 榆能横山电厂二期21000MW机组项目拟建设21000MW高效超超临界燃煤间接空冷机组&#xff08;电厂一期建设规模21000MW空冷机组&#xff0c;已于2019年投产…

MySQL程序

指定选项的方式 1、在mysql后面的命令行加上选项 mysql -uroot -p 连接mysql服务器 -u连接MySQL服务端用户名称 -p连接MySQL服务器密码 -V查看版本号 注&#xff1a;第一个不带-的名称会被解析成要访问的数据库 -e 执行SQL语句之后退出 2、在mysql之后指定配置文件路径&am…

bmp390l传感器的IIC命令通信(学习汇总)

参考链接&#xff1a; BMP390高精度压力传感器数据读取与处理&#xff08;基于STM32&#xff09;-CSDN博客 https://blog.csdn.net/qq_43862401/article/details/106502397 利用usb转iic模块测试bmp390l传感器采集当前环境的温度和气压数据&#xff0c;下图中reserved表示…

网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析

国内外要闻 Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析 在网络安全的复杂战场中&#xff0c;近期出现了一个值得关注的动态&#xff1a;名为 Rockstar 2FA 的钓鱼即服务&#xff08;PhaaS&#xff09;工具包遭遇变故&#xff0c;意外推动了另一个新生服务 Flo…

【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析

非比较排序&#xff1a;计数排序、桶排序与基数排序的深度解析与Java实现 引言 当我们谈论排序算法时&#xff0c;大多数人的第一反应可能是基于元素比较的排序方法&#xff0c;如快速排序或归并排序。然而&#xff0c;存在一类特殊的排序算法——非比较排序&#xff0c;它们…

stm32引脚模式GPIO

问题引入 stm32f103定时器的引脚GPIO_MODE_OUTPUT_PP和GPIO_MODE_AF_PP有什么区别&#xff1f; 在STM32F103微控制器中&#xff0c;使用定时器时涉及到的GPIO配置主要有两种模式&#xff1a;GPIO_MODE_OUTPUT_PP和GPIO_MODE_AF_PP。这两种模式的主要区别在于它们的用途和工作…

重温设计模式--工厂模式(简单、工厂、抽象)

文章目录 工厂模式定义工厂模式通常可以细分为以下几种类型1、简单工厂模式&#xff08;Simple Factory Pattern&#xff09;2、工厂方法模式&#xff08;Factory Method Pattern&#xff09;3、抽象工厂模式&#xff08;Abstract Factory Pattern) UML 图1、简单工厂模式UML2、…