C++ 字符串查重
2014-01-04 15:07
190 查看
前几天遇到一个笔试题目是有关字符串查重的问题,这个也是出现频率很高的题目类型,在这里就自己写写记录一下啦!
题目的大概意思是:给两个字符串,删除第一个字符串中与第二个字符串中字符相同的字符,并输出删除后的第一个字符串内容。
要求:字符串以字符指针的形式输入。字符串内容包括下划线、空格。
例如:字符串1为"The book is good!",字符串2为“ho oe”,输出为“Tbkisgd”。
题目的大概意思是:给两个字符串,删除第一个字符串中与第二个字符串中字符相同的字符,并输出删除后的第一个字符串内容。
要求:字符串以字符指针的形式输入。字符串内容包括下划线、空格。
例如:字符串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]; } }
相关文章推荐
- [C++] 在文件里面找字符串,然后在前面增加一个字符串
- How to get random string using C++ - 用 C++ 如何获取随机字符串
- C++:通过一个点的数据对象转换成字符串的例子来说明整数转化为字符串
- C++中字符串的输入和字符串的长度
- C++ 合并/去除字符串中多余的空格(创建新串)
- 判断两个字符串内数字是否相同,向量相同的C++程序。
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- c++字符串详解(转)
- C C++ 获取当前系统时间到字符串
- C++ 使用stringstream进行字符串与数字的转换
- C++中的字符串类型
- Java程序猿学习C++之字符串
- C++ 获取系统时间并且转换成字符串
- C和C++字符串处理函数
- 在c++中int转十六进制八进制二进制字符串
- [C++]逐行读取文件与分割字符串方法
- [C/C++]_[字符串处理]_[过滤出HTML标签的属性值]
- C++字符串完全指引之一(Win32 字符编码)
- C++字符串完全指南
- C++字符串【转】