计算C ++中两个字符串中的公共字符
我们给了两个字符串,分别是str1和str2,任务是找到两个字符串中的公共字符数,即如果str1 [i] = str [j],则它们将被视为一对,并且计数将增加到1,如果str1 [i]!= str2 [j],则它们不会被视为一对,并且计数也不会增加到1。
例如
Input − str1 = “hello”str2 = “heoo”Output − count is: 3
说明 -str1 [0] = str2 [0]即h;str1 [1] = str2 [1]即e;str1 [2]!= str2 [2]即l和o; str1 [3] = str2 [3] ieo因此,具有相似字母的对是3和1对包含不同字母的对。
Input − str1 = “point”str2 = “print”Output − count is: 4
说明-str1 [0] = str2 [0]即p;str1 [1]!= str2 [1]即o和r;str1 [2] = str2 [2]即i; str1 [3] = str2 [3]即n;str1 [4] = str2 [4] iet因此,具有相似字母的对是4和1对包含不同字母的对。
以下程序中使用的方法如下
输入两个字符串str1和str2
使用
length()
函数将计算两个字符串的大小,该函数将根据字符串中包含空格的字母数返回一个整数值。最初,用0初始化两个字符串中的字符频率。
现在,要更新str1的频率,请应用“ f1 [str1 [i]-'a'] ++”,这将增加每次迭代的频率,并对str2进行相同的处理
为了计算对数,对
min()
f1和f2应用函数。显示结果
示例
#include <iostream>using namespace std;
//计算有效索引对的功能
int pairs(string str1, int size1, string str2, int size2){
//f1和f2表示字符的频率
//字符串str1和str2-
int f1[26] = { 0 };
int f2[26] = { 0 };
//'c'计算有效对
int i, c = 0;
//更新str1和st2的频率
for (i = 0; i < size1; i++){
f1[str1[i] - 'a']++;
}
for (i = 0; i < size2; i++){
f2[str2[i] - 'a']++;
}
//查找有效对的数量
for (i = 0; i < 26; i++){
c += (min(f1[i], f2[i]));
}
return c;
}
//主要功能
int main(){
string str1 = "nhooo", str2 = "codingground";
int size1 = str1.length(), size2 = str2.length();
cout<<”Total pairs with str1[i]=str2[j] are: ”;
cout << pairs(str1, size1, str2, size2);
return 0;
}
输出结果
如果我们运行上面的代码,它将生成以下输出-
Total pairs with str1[i]=str2[j] are − 6
以上是 计算C ++中两个字符串中的公共字符 的全部内容, 来源链接: utcz.com/z/353411.html