C++删除重复字符? c语言指针删除重复字符
C语言 删除重复字符
程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除
#include<stdio.h>
void main()
{
char a[100],b[100];
//定义两个字符组,a[100]用来接收输入的字符串,b[100]用来存储不重复的字符
int pa=0,pb=0,i,flag;
scanf("%s",a);
//输入字符串到a[100]中,用scanf读入到a[100]中会自动在a[100]中字符串结束的地方加上'\0'
for(pa=0;a[pa]!='\0';pa++)
//for循环结束的条件是a[pa]==0,也就是从a[100]字符组中读取一个字符,直到没有
{
flag=1;
//flag是个标志符,当flag==1时,说明这个字符(下句中的a[pa])是第一次出现,应该加入到b[100]中
//如果flag==0,说明这个字符(下句中的a[pa])重复了,不应该加到b[100]中
for(i=0;i<pb;i++) if(b[i]==a[pa]) flag=0;
//把a[100]中读取的字符a[pa]与b[100]中的所有字符进行比较,如果b[i]==a[pa]
//说明这个字符已经在b[100]中了,也就是重复字符了,所有将flag=0,不能加入b[100]中
//如果a[pa]与b[100]中的所有字符都不相等,说明这个字条是第一次出现,应该加到b[100]
if(flag)
{
b[pb]=a[pa];pb++;
}
//如果flag==1,则将a[pa]这个字符加入到b[100]中,然后将pb加1
}
b[pb]='\0';
//当所有的不重复的字符都加入到b[100]中时,将b[100]中字符结束的地方加'\0',也就是b[pb]='\0'
//因为字符串都是民'\0'结尾的,所以加上这句
printf("%s\n",b);
//输出b[100]中的字符串,也就是删除过重复字符之后的了
}
怎样用c语言编写删除重复字符的程序
如果是简单的字符串判断,就蜗牛*赤焰 的方法就可以了~~~
就如蜗牛*赤焰提到的如果字符串中含有判断的字符就会有点麻烦了,这时候可以试一下有一个标志位来判断,标志输入的字符是否重复的,如下面的程序:(这样会比较麻烦,下面的程序只供参考,一般的用蜗牛*赤焰的就可以了:))
#include <stdio.h>
#include <vector>
struct detail
{
char c;
int exist;//标志位
};
std::vector<detail> statics;
int check(char c)
{
std::vector<detail>::iterator ite = statics.begin();
for (; ite != statics.end(); ite++)
{
if((*ite).c==c)return 0;//输入的字符已经存在
}
return 1;//输入的字符未存在
};
void main()
{
printf("请输入字符串:");
char c;
scanf("%c",&c);
while((int)c!=10)//获取用户输入
{
detail temp;
temp.c = c;
temp.exist = check(c);
statics.push_back(temp);
scanf("%c",&c);
}
std::vector<detail>::iterator ite = statics.begin();//打印非重复的字符
for (; ite != statics.end(); ite++)
{
if((*ite).exist)printf("%c",(*ite).c);
}
printf("\n");
}
求C语言代码,删除字符串中重复字符
#include
#include
#include
int main()
{
std::string str = "aabbcc";
std::cout << "Before: " << str << std::endl;
str.erase(std::unique(str.begin(), str.end()), str.end());
std::cout << "After: " << str << std::endl;
return 0;
}
纠错:C语言:删除重复字符。
没注释, 还不如重新写一个
#include
#include
int main()
{
char Letter[80]; //用于接收输入字符串
int result[128]={0}; //相当于一张空的ASCII码表
gets(Letter);
int size=strlen(Letter);
int i,j=0;
for(i=0;i { //字符串中的每个字符在空ASCII码表中打勾 result[Letter[i]]=1; } memset(Letter,'\0',80); //重置为空字符串 for(i=0;i<128;i++) //检索ASCII码表,逐个写入字符数组中 { if(result[i]==1) //只要ASCII码表中打了勾的字符,就写入数组 { Letter[j++]=i; } } printf("\n%s",Letter); return 0; }