您的位置:首页 > 编程语言 > C语言/C++

C++ 字符串查重

2014-01-04 15:07 190 查看
前几天遇到一个笔试题目是有关字符串查重的问题,这个也是出现频率很高的题目类型,在这里就自己写写记录一下啦!

题目的大概意思是:给两个字符串,删除第一个字符串中与第二个字符串中字符相同的字符,并输出删除后的第一个字符串内容。

要求:字符串以字符指针的形式输入。字符串内容包括下划线、空格。

例如:字符串1为"The book is good!",字符串2为“ho oe”,输出为“Tbkisgd”。

#include <iostream>
#include <string>

using namespace std;

char *DelStr(char *str)//删除字符串中相同的字符
{
char *str0;
int nleg = strlen(str);
str0 = (char *)malloc(nleg);
if (str[0]=='\0')
{
return 0;
}
str0[0]=str[0];
int count =0;
for (int i=1;str[i]!='\0';i++)
{
for (int j=0;j<=count;j++)
{
if (str[i]==str0[j])
{
count--;
break;
}
}
str0[j]=str[i];
count++;
}
str0[count+1]='\0';//删除后字符串的长度变短
return str0;
}

void main()
{
char *str1 = "The book is good!";
char *str2 = "ho oe";
str2 = DelStr(str2);//先将str2去重
int count = 0;
char *result;
result = (char *)malloc(strlen(str1));
for (int i = 0;str1[i]!='\0';i++)
{
for (int j=0;str2[j]!='\0';j++)
{
if (str1[i]==str2[j])
{
i++;
continue;//如果字str1中出现str2中的字符就继续比较str1中的下一个字符
}
}
result[count]=str1[i];
count++;
}
result[count]='\0';
for (int k=0;result[k]!='\0';k++)
{
cout<<result[k];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: