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

回到顶部