【C语言算法刷题】第9题

题目描述

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

 大小写转换的函数

/*把大小写转换的功能抽象成两个函数*/
void toLowerCase(char *s){
    int i=0;
    while(s[i]!='\0'){
        if(s[i]>='A'&&s[i]<='Z'){
            s[i]+=32;
        }
        i++;
    }
}

void toUpperCase(char *s){
    int i=0;
    while(s[i]!='\0'){
        if(s[i]>='a'&&s[i]<='z'){
            s[i]-=32;
        }
        i++;
    }
}
void convert(char *s){
    int lowerCount=0;
    int upperCount=0;
    
    int i=0;
    while(s[i]!='\0'){
        char c=s[i];
        if(c>='a'&&c<='z') lowerCount++;
        else if(c>='A'&&c<='Z') upperCount++;
        i++;
    }/*while循环统计大小写字符的个数*/
    
    if(lowerCount>upperCount){
        toLowerCase(s);
    }else if(lowerCount

预处理


int main(){
    
    int k;
    scanf("%d",&k);/*输入参数K*/
    
    char str[1000]={'\0'};
    scanf("%s",str);/*输入字符串str*/
    
    char res[1000]={'\0'};
    char newStr[1000]={'\0'};/*存储结果*/
    
    /*如果第二行输入的开头为'-',则说明第一个字串是空串*/
    int first=str[0]!='-';
    
    /*将字符串 str 按照字符 - 进行分割。*/
    /*strtok 函数用于将字符串分割成若干个子字符串(通常称为“标记”或“token”)*/
    char *token=strtok(str,"-");
    
    while(token!=NULL){
          if(first){
            strcat(res,token);/*将字符串 token 追加到字符串 res 的末尾。*/
            first=0;
          }else{
            strcat(newStr,token);
          }
          token=strtok(NULL,"-");  
    }
    for(int i=0;i

字符串处理知识补充

【C语言算法刷题】第9题_第1张图片

【C语言算法刷题】第9题_第2张图片 【C语言算法刷题】第9题_第3张图片

你可能感兴趣的:(C语言算法刷题,算法,c语言,数据结构)