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

在公交车上看一博客实现删除字符串中出现次数最少的字符,认为里面使用数组来作为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 = '\0';
	return crtn;
}


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



posted @ 2017-06-28 12:40  wzzkaifa  阅读(487)  评论(0编辑  收藏  举报