給定一個非空字符串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;
}
}
}