题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

#include<stdio.h>
#include<string.h>

//分别统计小写个数、大写个数
//在原数组中按字母表顺序寻找每个字母*(大小写)并写入新数组。
//寻找时利用个数作为条件可以节省时间。
//与原数组进行比较,分别输出新数组中重新排序后的字母和原数组原位置中的非字母。
//scanf遇到空格会停止,所以用结尾标志位'\n'来循环输入。


char input[1000],in,temp[1000],new[1000];
int alpha[26],beta[26];
int i=0,j=0,k=0,len,flag[26];

int main()
{
  
        while(1)//输入数据
    {
        if(in != '\n')
        {
           scanf("%c",&in);
           input[i] = in; 
           i++;
        }
        else
            break;        
    }

    len=i;//获取数组长度
      
   
      for(i=0;i<len;i++)//记录出现次数
      {
        if((input[i]>='A')&&(input[i]<='Z'))  //大写
        {
            alpha[input[i]-'A']++;
            
        }
          else if((input[i]>='a')&&(input[i]<='z'))//小写
          
          {
              beta[input[i]-'a']++;
        
          }
        
      } 
 
    
    
    for(i=0;i<26;i++)//取每一个字母
    {
           
     if(alpha[i]+beta[i]>0)//判断该字母在序列中是否存在
     {
         for(j=0;j<len;j++)//导入序列
         {
            
             if((input[j]==i+'A')||(input[j]==i+'a'))//按顺序寻找字母,一次只找一个字母的大小写
             {               
                 temp[k]=input[j];//将寻找到的字母放入新数组
                 k++;
             }
         
         }
         
         
     }
        
        
        
    }
    
    j=0;
    for(i=0;i<len;i++)//将所有数据写入数组
    {
        if(((input[i]>='A')&&(input[i]<='Z'))||((input[i]>='a')&&(input[i]<='z')))//字母项
        {
           new[i]=temp[j];//将排好顺序的字母写入按原格式填入输出数组的空字母位。
            j++;
           
        }
        else//非字母项,按原数组各位置填入输出数组。
        {
            
            new[i]=input[i];
            
            
        }   
        
        
        
    }
    
    for(i=0;i<len;i++)//输出
    {
        
       printf("%c", new[i]);
        
    }
    
    
    
    
}
全部评论
半夜三点发布!!哥哥太牛了
1 回复 分享
发布于 2022-04-06 16:31

相关推荐

昨天 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务