我们给了两个字符串,分别是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