去除重复字符并排序
运行时间限制:无限制
内容限制: 无限制
输入: 字符串
输出: 去除重复字符并排序的字符串
样例输入: aabcdefff
样例输出: abcdef
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
方法一:
bool g_flag[26]={0};
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int i=0;
if(pInputStr==NULL || lInputLen<=1)
return ;
const char* p=pInputStr;
while(*p!=’\0’)
{
if(g_flag[*p-‘a’])
p++;
else
{
pOutputStr[i++]=*p;
g_flag[*p-‘a’]=1;
p++;
}
}
pOutputStr[i]=’\0’;
}
方法二:
void solve(char* str,int len)
{
int i,hash[256];
memset(hash,0,sizeof(hash));
for(i=0;i<len;i++)
{
if(hash[str[i]]==0)
hash[str[i]]=1;
}
for(i=0;i<256;i++)
if(hash[i]!=0)
putchar(i);
printf("\n");
}
测试
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int len;
char str[1000];
scanf("%s",str);
len=strlen(str);
//solve(str,len);
char outstr[100];
stringFilter(str,len,outstr);
printf("%s",outstr);
}