在这个问题中,我们有两个字符串str1和str2。我们的任务是检查str2和str1中是否存在所有字符。
让我们以一个例子来了解问题
输入-
str1 = “Hello” str2 = “Hell”
输出-是
解释-str2的所有字符都出现在str1中。
要解决此问题,一个简单的解决方案是检查str1中str2的每个字符,然后返回解决方案。
但是我们需要创建有效的解决方案。因此,我们将使用一个频率数组(所有有效字符的长度为256),然后遍历str1并根据出现的相应字符增加频率数组中的值。然后,我们将遍历str2,这将在出现时减少频率阵列。并且在每次迭代中,我们还将检查该频率是否已变为负数。如果那是不可能的,否则是可能的。
显示我们解决方案实施情况的程序
#include <iostream>
#include <string.h>
using namespace std;
bool isPresent(string str1, string str2){
int freq[256] = { 0 };
for (int i = 0; i<str1.length(); i++)
freq[str1[i]]++;
for (int i=0;i<str2.length(); i++) {
if (freq[str2[i]] < 1)
return false;
}
return true;
}
int main() {
string str1 = "nhooo";
string str2 = "point";
cout<<"All charcters of '"<<str2<<"' are ";
isPresent(str1,str2)?cout<<"present":cout<<"not present";
cout<<" in '"<<str1<<"' ";
return 0;
}输出结果
All charcters of 'point' are present in 'nhooo'