宝塔山 发表于 2024-12-23 04:00:36

华为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);
               
                StringBuilder sb1 = new StringBuilder();
                for (int i = 1; i < tmps.length; i++) {
                        sb1.append(tmps);
                }
                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();
        }

}


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 华为OD E卷(100分)32-字符串分割