简介
C++ 字符串是字母数字字符流。字符串具有以下属性 -
字符串由一组固定的字符组成
字符串位置默认从第 0 个索引开始
任何字符的频率是指它在字符串中出现的次数。任何字符的频率范围可以从 0 (如果它没有出现到字符串的长度)。
在本文中,我们将开发一个代码,该代码将字符串作为输入,并检查任何字符的频率是否等于字符串中所有其他字符的频率总和。让我们看下面的例子来更好地理解这个主题
示例
示例 1 - str - “@!ab@!”
输出 - 真
例如下面的示例字符串,也包含特殊字符,其中每个字符对应的频率如下 -
@=4
! = 2
a=1
b = 1
因此,以下字符串具有以下适用属性
频率(@) = 频率(!) + 频率(a)+频率(b)
4 = 2 + 1 + 1
在本文中,我们将创建一个解决方案来计算字符串中每个字符出现的次数,并进一步检查是否存在具有所需频率计数的字符
语法
'str.length()
长度()
C++中的length()方法用于计算字符串中的字符数。
算法
接受输入字符串 str
创建一个包含 26 个字母的数组来存储字符的出现频率。它用计数 0 初始化,由 freq 数组指定
使用length()方法计算字符串的长度,记为len
如果字符串长度为奇数,则返回 false flag
每次提取第 i 个位置的字符
该字符的出现频率加 1。
计算完字符串的整个长度后,检查频率数组
如果某个字符的频率等于其他字符的频率之和,则返回布尔标志值 true。
示例
下面的C++代码片段用于检查给定的输入字符串中是否有任何字符出现的频率分别等于所有字符的频率之和 -
'//including the required libraries
#include <bits/stdc++.h>
using namespace std;
//function to check if the frequency of occurrence of data is equivalent to other characters' frequency
bool charwithequalFreq(string str) {
//storing the frequency of characters
int freq[26] = { 0 };
//length of string
int len = str.length();
//if the length of the string is odd
if (len % 2 == 1)
return false;
// Update the frequencies of the characters
for (int i = 0; i < len; i++){
char ch = str[i];
freq[ch - 'a']+=1;
}
for (int i = 0; i < 26; i++)
if (freq[i] == len / 2)
{
cout<<"Holds true for character "<<(char)(i+'a') <<"n";
return true;
}
//none of the cases hold true
return false;
}
//calling the frequency method
int main() {
//input string
string str = "tweeet";
cout<< "Input String : "<<str<<"n";
//check the frquency
bool res = charwithequalFreq(str);
if(!res){
cout<<"There is no such character";
}
return 0;
}
输出
'Input String : tweeet
Holds true for character e
结论
C++ 字符串中的字符位置默认从第 0 个索引开始。字符串是一种动态长度存储结构,其中的字符可以轻松附加任意次。 C++ 字符串中的每个字符都与一个计数相关联,由其频率表示。映射数据结构非常有用,其中每个键都与一个确定的值相关联。