在公交车上看一博客实现删除字符串中出现次数最少的字符,认为里面使用数组来作为hash很好,所以我就自己实现一遍。
要求:实现删除一个字符串中出现次数最少的字符。输出删除后的字符,要求安装原来顺序输出。假设出现次数一样,则都删除。
比如:abcabc 则所有删除,输出Null。
aabbccddd 则输出 ddd
代码:
char* DeleteLeastString(char* desStrint)
{if (desStrint == NULL){return NULL;}char* crtn = new char[len]; //存储输出字符,注意是newchar* 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++;elsectempDes++; }*ctemp = '\0';return crtn;
}