我今天有期中考试。这是第一个问题。我无法解决这个问题。确切的要求如下:我们必须确定一个字符串,比如说“DA”是否是另一个“ABCD”的子集。字母的数量至关重要,例如“DAD”不是“ABCD”的子集。因为“D”重复了两次,而在父字符串中“D”出现了一次。也可以假设没有。父字符串的字母数总是等于或大于另一个。
我想了很多。我对此的方法是,我会将要找到的子字符串的字符与父字符串进行比较。如果找到匹配项,我会将其索引存储在第三个数组中。所以最后我将拥有父数组的字符数组,该数组与另一个数组中的字符匹配。这就是我能够达到的程度。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char array[] = "ABCD";
char array1[] = "AB";
int size = strlen(array);
int size1 = strlen(array1);
int temp[size];
int no = 0;
for (int i = 0; i< size1; i++)
{
for (int j = 0; j< size; j++)
{
if (array1[i]==array[j])
{
for(int k = 0; k<size ; k++)
{
if (temp[k] != j)
{
temp[no] = j;
no++;
}
}
}
}
}
for (int i = 0; i<size; i++)
cout<<endl<<temp[i]<<" ";
return 0;
}
请帮助解决这个问题,如果您有其他方法,请告诉我。此外,数组或字符串是否是解决此问题的更好方法。我正在用 C++ 编写,在此先感谢