华为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实现

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();
	}

}
相关推荐
卡洛斯(编程版28 分钟前
(1) 哈希表全思路-20天刷完Leetcode Hot 100计划
python·算法·leetcode
NAGNIP1 小时前
DeepSeekMoE 架构解析
算法
不喜欢学数学er1 小时前
算法第五十二天:图论part03(第十一章)
算法·深度优先·图论
养成系小王1 小时前
四大常用排序算法
数据结构·算法·排序算法
NAGNIP1 小时前
一文搞懂DeepSeek LLM
算法
已读不回1432 小时前
设计模式-策略模式
前端·算法·设计模式
CoovallyAIHub2 小时前
标注成本骤降,DINOv3炸裂发布!冻结 backbone 即拿即用,性能对标SOTA
深度学习·算法·计算机视觉
BB学长2 小时前
流固耦合|01流固耦合分类
人工智能·算法
汤永红3 小时前
week3-[分支嵌套]方阵
c++·算法·信睡奥赛
广州智造3 小时前
EPLAN教程:流体工程
开发语言·人工智能·python·算法·软件工程·软件构建