面试题|华为机试题

给定一个非空字符串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@

import java.util.Locale;

public class MainClass {
    public static void main(String[] args) {
        getAnswer("12abc-abCABc-4aB@",3);
    }

    /**
     * @param question
     * @param k
     */
    private static void getAnswer(String question,int k){
        String[] temp = question.split("-");
        StringBuffer a = new StringBuffer(temp[0]);
        String b = question.substring(temp[0].length()+1);
        b = b.replace("-","");
        while (b.length() >= k){
            String bf = b.substring(0, k);
            //大写字母多?
            if(isUpMore(bf)==1){
                bf = bf.toUpperCase();
            }else if(isUpMore(bf)==0){
               bf = bf.toLowerCase();
            }
            a.append("-").append(bf);
            b = b.substring(k);
        }
        if(b.length()>0){
            if(isUpMore(b)==1){
                b = b.toUpperCase();
            }else if(isUpMore(b)==0){
               b = b.toLowerCase();
            }
            a.append("-").append(b);
        }
        System.out.println(a.toString());
    }

    private static int  isUpMore(String s){
        int upNum = 0;
        int downNum = 0;
        for (int i = 0; i <s.length() ; i++) {

            if(s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
               upNum++;
           }else if(s.charAt(i) >= 'a' && s.charAt(i) <= 'z'){
               downNum ++;
           }
        }
        if (upNum>downNum){
            return 1;
        }else  if (upNum<downNum){
            return 0;
        }else {
            return 2;
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容