题解 | #删除字符串中出现次数最少的字符#

删除字符串中出现次数最少的字符

http://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9

#include <stdio.h>

int main()
{
    char str[20]={'\0'};
    while(scanf("%s\n",&str)!=EOF)
    {
        int len=0;
        int min_cnt,min_aph=0;
        int rc[26]={0}; //记录26个字母出现的次数
        int tmp; //临时存放转换后的字母
        char min_c; //存放出现次数最少的字母
        len=strlen(str);
        int i,j,k=0;
        //记录每个字符出现的次数
        for(i=0;i<len;i++)
        {
            tmp=(int)(str[i]-97);
            rc[tmp]++;
        }
        //找到出现次数最少的字符
        for(i=0;i<26;i++)
        {
            if(rc[i]!=0)
            {
                min_aph=i;
                min_cnt=rc[i];
                break;
            }
         }
        for(i=0;i<26;i++)
        {
            if(rc[i]<min_cnt&&rc[i]!=0)
            {
                  min_aph=i;
                  min_cnt=rc[i];
            }
        }
        min_c=(char)(min_aph+97);
        //删除它
        for(i=0;i<len;i++)
        {
            if(str[i]==min_c)
            {
                for(j=i;j<len;j++)
                {
                    str[j]=str[j+1];
                }
                len--;
            }
        }
        //再次查看是否有相同长度的字符
          for(i=0;i<26;i++)
            {
                if(rc[i]==min_cnt)
                {
                      min_aph=i;
                      min_c=(char)(min_aph+97);
                      for(j=0;j<len;j++)
                      {
                        if(str[j]==min_c)
                        {
                            for(k=j;k<len;k++)
                            {
                                str[k]=str[k+1];
                            }
                            len--;
                        }
                      }
                 }
            }

        //输出删除后的字符串
        puts(str);
    }
    return 0;
}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务