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

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

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

思路:
(1)找出字符串中每个字母的出现次数。aabcddd 对应的就是2211333
(2)找出次数最小的位置,location=[2 3];
(3)for(int i=0;i<strlen(str);i++)  只要 i 不等于 location中的任一元素,就输出 str[i]
程序:
#include<stdio.h>
#include<string.h>
int main()
{
    char str[21]={'\0'};
    int num[20]={0};
    while(scanf("%s",str)>0)
    {
        for(int i=0;i<strlen(str);i++)
        {
          for(int j=0;j<strlen(str);j++)
          {
              if(str[i]==str[j])
                  num[i]++;
          }
              //printf("%d",num[i]);
        }
        //找出出现次数最少的字母,并将其位置记录在location中。
        int min=200;
        int location[20]={-1},j;
        for(int i=0;i<strlen(str);i++)
        {
           if(num[i]<min)
           {
               j=0;
               min=num[i];
               location[j]=i;
           }
            else if(num[i]==min)
            {
                j=j+1;
                 location[j]=i;
            }
        }
        //输出剔除最少次数的字母
        int allow=0;
        for(int i=0;i<strlen(str);i++)
        {
            for(int k=0;k<=j;k++)
            {
                if(i!=location[k])
                 allow=1;
                else 
                {
                    allow=0;
                    break;
                }
            }
            if(allow==1)
            printf("%c",str[i]);
        }
    }
}
全部评论

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务