用c++求两个字符串交集
时间: 2024-06-04 15:02:50 浏览: 175
可以使用双重循环遍历两个字符串,将它们的交集存储在一个新的字符串中。具体实现可以参考以下代码:
```cpp
#include <iostream>
#include <string.h>
using namespace std;
void intersection(char str1[], char str2[], char result[]) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int index = 0;
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
if (str1[i] == str2[j]) {
result[index++] = str1[i];
break;
}
}
}
result[index] = '\0';
}
int main() {
char str1[] = "abcD";
char str2[] = "baccfoweifhauiDdf";
char result[100];
intersection(str1, str2, result);
cout << result << endl;
return 0;
}
```
输出结果为:`acD`
相关问题
c++求两个字符串的交集,如"hello"和"look"的交集为"lo"。
根据提供的引用内容,C++中没有直接求两个字符串交集的函数,但可以通过遍历两个字符串来实现。具体步骤如下:
1. 定义两个字符串str1和str2,以及一个空字符串result。
2. 遍历str1中的每个字符,判断该字符是否在str2中出现过,如果出现过且result中没有该字符,则将该字符添加到result中。
3. 返回result字符串即为两个字符串的交集。
以下是C++代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
string intersection(string str1, string str2) {
string result = "";
for (int i = 0; i < str1.length(); i++) {
if (str2.find(str1[i]) != string::npos && result.find(str1[i]) == string::npos) {
result += str1[i];
}
}
return result;}
int main() {
string str1 = "hello";
string str2 = "look";
string result = intersection(str1, str2);
cout << result << endl; // 输出:lo
return 0;
}
```
c++求两人字符串的集差
在C++中,如果你想计算两个字符串集合的交集和差集,可以先将这两个字符串转换为集合(set),然后利用集合的特性来操作它们。以下是基本步骤:
1. 定义一个包含字符的容器,例如`std::unordered_set<char>`来存储每个字符串中的唯一字符。
2. 对于第一个字符串,将其所有字符添加到这个集合中。
```cpp
std::string str1;
std::unordered_set<char> charSet1;
for (char c : str1) {
charSet1.insert(c);
}
```
3. 同样地,处理第二个字符串,生成另一个集合`charSet2`。
4. 计算交集(同时存在于两个集合中的字符):
```cpp
std::unordered_set<char> intersection(charSet1, charSet2);
intersection = charSet1.intersection(charSet2);
```
这里假设有一个名为`intersection`的函数用于计算两个集合的交集。
5. 计算差集(只在第一个字符串中存在的字符):
```cpp
std::unordered_set<char> difference1(charSet1);
difference1 = charSet1.difference(charSet2); // 或者直接用charSet1 - charSet2
std::unordered_set<char> difference2(charSet2);
difference2 = charSet2.difference(charSet1); // 只有当str2较长时才需要这一步,因为交集已经包含了差异部分
```
6. 最后,你可以通过循环遍历这些集合并打印出结果,或者根据需求构建新的字符串。
阅读全文