面試題|華為機試題

給定一個非空字符串S,其被N個‘-’分隔成N+1的子串,給定正整數(shù)K,要求除第一個子串外,其余的子串每K個字符組成新的子串,并用‘-’分隔。對于新組成的每一個子串,如果它含有的小寫字母比大寫字母多,則將這個子串的所有大寫字母轉(zhuǎn)換為小寫字母;反之,如果它含有的大寫字母比小寫字母多,則將這個子串的所有小寫字母轉(zhuǎn)換為大寫字母;大小寫字母的數(shù)量相等時,不做轉(zhuǎn)換。
輸入描述:
輸入為兩行,第一行為參數(shù)K,第二行為字符串S。
輸出描述:
輸出轉(zhuǎn)換后的字符串。
示例1
輸入
3
12abc-abCABc-4aB@
輸出
12abc-abc-ABC-4aB-@
說明
子串為12abc、abCABc、4aB@,第一個子串保留,后面的子串每3個字符一組為abC、ABc、4aB、@,abC中小寫字母較多,轉(zhuǎn)換為abc,ABc中大寫字母較多,轉(zhuǎn)換為ABC,4aB中大小寫字母都為1個,不做轉(zhuǎn)換,@中沒有字母,連起來即12abc-abc-ABC-4aB-@
示例2
輸入
12
12abc-abCABc-4aB@
輸出
12abc-abCABc4aB@
說明
子串為12abc、abCABc、4aB@,第一個子串保留,后面的子串每12個字符一組為abCABc4aB@,這個子串中大小寫字母都為4個,不做轉(zhuǎn)換,連起來即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;
        }
    }
}

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容