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] 即 o。因此,具有相似字母的对有 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] 即 t。因此,具有相似字母的对有 4 对,1 对包含不同的字母。
下面程序中使用的方案如下
输入两个字符串 str1 和 str2
使用 length() 函数计算两个字符串的大小,该函数将根据字符串中的字母数(包括空格)返回一个整数值。
最初,将两个字符串中字符的频率初始化为 0。
现在,为了更新 str1 的频率,应用“f1[str1[i] - 'a']++”,这将随着每次迭代增加频率,并对 str2 应用相同的过程
为了计算对的数量,对 f1 和 f2 应用 min() 函数。
显示结果
示例
#include <iostream>
using namespace std;
// Function to count the valid indices pairs
int pairs(string str1, int size1, string str2, int size2){
// f1 and f2 for frequencies of characters
// of string str1 and str2
int f1[26] = { 0 };
int f2[26] = { 0 };
// 'c' To count the valid pairs
int i, c = 0;
//updating the frequencies of str1 and st2
for (i = 0; i < size1; i++){
f1[str1[i] - 'a']++;
}
for (i = 0; i < size2; i++){
f2[str2[i] - 'a']++;
}
// Find the count of valid pairs
for (i = 0; i < 26; i++){
c += (min(f1[i], f2[i]));
}
return c;
}
// main function
int main(){
string str1 = "tutorialspoint", 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP