문자열에서 문자 수가 가장 적은 문자 삭제 - 화웨이 창사 스팟
/**
**
** : , :
**
** char * delChar(char *s,int iLen)
**
** s ,iLen 。
**
** “abcdd”, "dd"。
**
** , 20。
**/
방법1:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char * delChar(char *s,int iLen)
{
if((s == NULL) || iLen <= 0)
{
return NULL;
}
int i;
/* 26 */
const int MAXLEN = 26;
/*min */
/* nCountTable , 0*/
unsigned int min,nCountTable[MAXLEN];
/* 0*/
for(i = 0;i < MAXLEN;i ++)
{
nCountTable[i] = 0;
}
/* */
for(i = 0;i < iLen;i ++)
{
nCountTable[*(s + i) - 'a'] ++;
}
/* nCountTable 0 , , */
while(nCountTable[i] == 0)
{
i ++;
}
min = nCountTable[i];
/* , */
for(i = 0;i < MAXLEN;i ++)
{
if(nCountTable[i] != 0)
{
if(nCountTable[i] < min)
{
min = nCountTable[i];
}
}
}
/* , */
char *pSlow = s;
char *pFast = s;
while(*pFast != '\0')
{
if(nCountTable[*pFast - 'a'] != min)
{
*pSlow = *pFast;
pSlow ++;
}
pFast ++;
}
*pSlow = '\0';
return s;
}
int main()
{
char str[] = "abadccdehigiktk";
int iLen = strlen(str)/sizeof(char);
char *tmp = delChar(str,iLen);
printf("%s
",tmp);
}
방법2:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char * delChar(char *s,int iLen)
{
if((s == NULL) || iLen <= 0)
{
return NULL;
}
int i;
/* 26 */
const int MAXLEN = 26;
/*min */
/* nCountTable , 0*/
unsigned int min,nCountTable[MAXLEN];
/* 0*/
for(i = 0;i < MAXLEN;i ++)
{
nCountTable[i] = 0;
}
/* */
for(i = 0;i < iLen;i ++)
{
nCountTable[*(s + i) - 'a'] ++;
}
/* nCountTable 0 , , */
while(nCountTable[i] == 0)
{
i ++;
}
min = nCountTable[i];
/* , */
for(i = 0;i < MAXLEN;i ++)
{
if(nCountTable[i] != 0)
{
if(nCountTable[i] < min)
{
min = nCountTable[i];
}
}
}
/* , */
char *tmp = (char *)malloc(sizeof(char)*iLen);
i = 0;
while(*s != '\0')
{
if(nCountTable[*s - 'a'] != min)
{
*(tmp + i) = *s;
i ++;
}
s ++;
}
*(tmp + i) = '\0';
return tmp;
}
int main()
{
char str[] = "abadccdehigiktk";
int iLen = strlen(str)/sizeof(char);
char *tmp = delChar(str,iLen);
printf("%s
",tmp);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
언제가 아닌가프로그래밍 언어에서 null 참조가 수십억 달러의 실수라는 말을 이미 들었을 것입니다. Java의 유명하고 두려운 NullPointerException은 여러분이 알고 있거나 C의 분할 오류일 수 있습니다. 모든 상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.