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

}
相关推荐
森焱森2 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
QuantumStack4 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
写个博客4 小时前
暑假算法日记第一天
算法
绿皮的猪猪侠4 小时前
算法笔记上机训练实战指南刷题
笔记·算法·pta·上机·浙大
hie988945 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab
杰克尼5 小时前
BM5 合并k个已排序的链表
数据结构·算法·链表
.30-06Springfield6 小时前
决策树(Decision tree)算法详解(ID3、C4.5、CART)
人工智能·python·算法·决策树·机器学习
我不是哆啦A梦6 小时前
破解风电运维“百模大战”困局,机械版ChatGPT诞生?
运维·人工智能·python·算法·chatgpt
xiaolang_8616_wjl6 小时前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
small_wh1te_coder6 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c