題目描述:
通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串過濾程序,若字符串中出現多個相同的字符,將非首次出現的字符過濾掉。
比如字符串“abacacde”過濾結果爲“abcde”。
要求實現函數:
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
【輸入】 pInputStr: 輸入字符串
lInputLen: 輸入字符串長度
【輸出】 pOutputStr: 輸出字符串,空間已經開闢好,與輸入字符串等長;
【注意】只需要完成該函數功能算法,中間不需要有任何IO的輸入輸出
示例
輸入:“deefd” 輸出:“def”
輸入:“afafafaf” 輸出:“af”
輸入:“pppppppp” 輸出:“p”
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void stringFilter(const char *pInputStr, long lInputLen,char *pOutputStr)
{
int i=0,j=0;
long lOutputLen=1;
char flag = 0;
pOutputStr = (char *)malloc(lInputLen+1);
assert(pInputStr!=NULL);
assert(pOutputStr!=NULL);
*pOutputStr = *pInputStr;
for(i=1;i<lInputLen;i++)
{
flag=0;
for(j=0;j<lOutputLen;j++)
{
if((*(pInputStr+i))==(*(pOutputStr+j)))
{
flag = 1;
break;
}
}
if(flag == 0)
{
*(pOutputStr+lOutputLen)=*(pInputStr+i);
lOutputLen++;
}
}
printf("pOutputStr:");
i=0;
while(i<lOutputLen)
{
printf("%c",*(pOutputStr+i));
i++;
}
printf("\n");
}
void main()
{
long lInputLen = 0;
char c;
char *pOutputStr = NULL;
char *pInputStr = (char *)malloc(100);
printf("pInputStr:");
*(pInputStr+lInputLen)=getchar();
while((*(pInputStr+lInputLen))>='a'&&(*(pInputStr+lInputLen))<='z')
{
lInputLen++;
*(pInputStr+lInputLen)=getchar();
}
printf("lInputLen: %d\n",lInputLen);
stringFilter(pInputStr,lInputLen,pOutputStr);
}