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