当前位置: 首页 > article >正文

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

前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近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.kler.cn/a/450583.html

相关文章:

  • 使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案
  • Linux服务器端自动挂载存储设备(U盘、移动硬盘)
  • 论文《Vertical Federated Learning: Concepts, Advances, and Challenges》阅读
  • JAVA开发入门学习七- 数组
  • 一个比RTK或redux更轻量级更易使用的 React 第三方状态管理工具库的配置与使用
  • HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发
  • C中设计不允许继承的类的实现方法是什么?
  • 一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
  • Pion WebRTC 项目教程
  • 【JetPack】Navigation知识点总结
  • 【es6复习笔记】解构赋值(2)
  • 【算法】一维二维数组前缀和,以及计算二维矩阵中的子矩阵和
  • Docker-如何启动docker
  • 使用Python开发PPT图片提取与九宫格合并工具
  • 京东物流营销 Agent:智能驱动,物流新篇(13/30)
  • 面对小白的C语言学习方法
  • C++进阶(二)--面向对象--继承
  • 设计模式的主要分类是什么?请简要介绍每个分类的特点。
  • 服务器中了挖矿病毒-应急响应
  • 活着就好20241225
  • ctf相关总结
  • StartAI图生图局部重绘,让画面细节焕发新生!!
  • 基于单片机(如 51 单片机)实现十字路口交通灯控制电路的设计方案示例
  • 【Vue3+ts入门小试牛刀】
  • [机器学习]sklearn入门指南(2)
  • Elasticsearch介绍及安装部署