zoukankan      html  css  js  c++  java
  • 删除字符串中出现次数最少的字符

    在公交车上看一博客实现删除字符串中出现次数最少的字符,认为里面使用数组来作为hash很好,所以我就自己实现一遍。

    要求:实现删除一个字符串中出现次数最少的字符。输出删除后的字符,要求安装原来顺序输出。假设出现次数一样,则都删除。

    比如:abcabc 则所有删除,输出Null。

                aabbccddd 则输出 ddd

    代码:

    char* DeleteLeastString(char* desStrint)
    {
    	if (desStrint == NULL)
    	{
    		return NULL;
    	}
    	char* crtn = new char[len];    //存储输出字符,注意是new
    	char* ctemp = crtn;
    	char* ctempDes = desStrint;
    	int min = len                  //记录最少出现次数
    	int len = 0;
    	int hash[256] = {0};           //下面标为key,值为value(次数)
    	while(*ctempDes) //获取字符个数,并填充hash表
    	{
    		++hash[(int)*ctempDes];
    		ctempDes++;
    		len++;
    	}
    	ctempDes = desStrint;
    
    	while(*ctempDes) //找出字符出现最少次数的值
    		if (min > hash[(int)*ctempDes++])
    			min = target;
    
    	ctempDes = desStrint;
    	while(*ctempDes)//输出删除后的字符串
    	{
    		if (min < hash[(int)*ctempDes])
    			*ctemp++ = *ctempDes++;
    		else
    			ctempDes++;		
    	}
    	*ctemp = '';
    	return crtn;
    }


    我相信,肯定有比我更好的实现方法,知道的告知一声,谢谢。



  • 相关阅读:
    leetcode_697. 数组的度
    645. 错误的集合
    leetcode_448. 找到所有数组中消失的数字
    leetcode_628. 三个数的最大乘积
    leetcode_414. 第三大的数
    leetcode_495. 提莫攻击
    leetcode_485. 最大连续1的个数
    在 Mac、Linux、Windows 下Go交叉编译
    Goland基本操作
    etcd搭建及基本使用
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7089204.html
Copyright © 2011-2022 走看看