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

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

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

这回没有绑架算力

空间节省了不少

但是为什么我减少了循环重数

时间却大幅度拉长

泪目

也许是又遍历了不需要的内容

不要看开头注释

注释是暴力破解解法的思想


写的貌似是hash?看大家都说是hash,这个方法果然比n重循环简单多了。又学到了新的东西。快乐。

重点是将字符型变量与整型联系起来,可以较为方便地将记录的特征存入新的数组,便于查找。

后方直接用限制条件的标志位和字符串中每个元素的特征进行比较(新数组中内容)。

输出时输出原字符串内容。

妙啊!

#include<string.h>



//记录每个字符出现的次数
//记录最少字符出现的位置(二维vector)
//范围用次数界定
//后续字母覆盖(覆盖次数和出现次数相同)
//又是暴力解法
//寻求精妙解法

char string[20];
int i=0,j=0,k=0,flag[26]={0},len;
int min=20;


max(int a,int b)
{
    
   return a>b?a:b;
    
}



int main()
{
    while(scanf("%s\n",string)!=EOF)
    {
      len = strlen(string);  
      for(i=0;i<len;i++)//计算每个字母出现个数
      {
          flag[string[i]-'a']++;         
      }
        
        for(i=0;(i<26);i++)//求最短序列
        {
         if((flag[i]<min)&&(flag[i]!=0))   
         {
             min=flag[i];
             
         }  
            
        }
       
        for(i=0;i<len;i++)//按flag中的特征输出string的内容,最短不输出
        {
            if(flag[string[i]-'a']>min)
            printf("%c",string[i]);
        }
        
        
    }
    
    
    
    
    
}
全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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