计算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