字母位置和频率奇偶相同的字母数量的奇偶性

字母位置和频率奇偶相同的字母数量的奇偶性

在这个问题中,我们将计算频率位置具有相同奇偶校验的字符的数量,并打印该数字的计数为奇数或偶数。

为了解决这个问题,我们可以找到字符串中每个字符的频率,并统计频率和位置具有相同奇偶校验的字符总数。之后,我们可以根据计数打印奇数或偶数答案。

问题陈述 – 我们给出了一个仅包含小写英文字母字符的字符串 alpha。我们需要检查字母位置和频率相同的字符数量是奇数还是偶数。

如果任何字符满足以下任何条件,则该字符具有相同的频率和字母位置奇偶性

如果字符串中的字符频率为奇数,且字母位置也为奇数。

如果字符串中的字符频率是偶数,并且字母位置也是偶数。

示例

输入

alpha = "dbbabcdc"

输出

Even

说明 

a的出现频率为1,位置也为1,因此奇偶校验相同,计数变为1。

d的频率为2,位置为4。因此,由于奇偶校验位相同,计数变为2。

计数值为 2,为偶数。

输入

alpha = "ppqqr"

输出

Odd

说明 – 只有‘p’的奇偶校验相同。因此,计数为 1,答案为奇数。

输入

alpha = "pqqqqrrr";

输出

Even

说明 – 任何字符的奇偶校验都不相同。因此,由于计数值为零,它会打印“Even”。

方法 1

在这种方法中,我们将使用映射数据结构来存储每个字符串字符的频率。之后,我们将统计字母位置和频率中具有相同奇偶性的字符的数量。

算法

第 1 步 – 定义长度为 27 的 count[] 数组并用 0 初始化。此外,用 0 初始化“奇偶校验”。

第 2 步 – 将字符频率存储在 count[] 数组中。

第 3 步 – 进行 26 次迭代以遍历每个小写字母字符。

步骤4 – 如果count[p]大于0,检查字符频率和位置是否具有相同的奇偶校验。如果是,则将“奇偶校验”值增加 1。

第 5 步 – 最后,如果奇偶校验可被 2 整除,则返回“Even”。否则,返回“奇数”。

示例

#include using namespace std;string getParity(string alpha) {    // To store the count of characters    int count[27] = {0};    int parity = 0;    // Count frequency of each character    for (int p = 0; p < alpha.size(); p++) {        count[alpha[p] - 'a' + 1]++;    }    for (int p = 1; p <= 26; p++) {        if (count[p] != 0) {            // Increment parity for valid odd and even parity            if (p % 2 == 0 && count[p] % 2 == 0 || p % 2 == 1 && count[p] % 2 == 1)                parity++;        }    }    // Return value based on final parity count    if (parity % 2 == 1)        return "ODD";    else        return "EVEN";}int main() {    string alpha = "dbbabcdc";    cout << "The parity of given string's character's is " << getParity(alpha);    return 0;}

输出

The parity of given string's character's is EVEN

时间复杂度 – O(N) 用于计算字符的频率。

空间复杂度 – O(26) ~ O(1) 来存储字母字符的频率。

方法2

在这种方法中,我们将对给定的字符串进行排序。之后,每当我们得到不同的相邻字符时,我们都会检查前一个字符的频率和位置的奇偶性。

算法

第 1 步 – 将“奇偶校验”初始化为 0。

第 2 步 – sort() 方法用于对给定字符串进行排序。

第3步 – 开始遍历字符串,并将‘charCnt’初始化为0以存储当前字符的频率。

步骤 4 – 如果当前字符与下一个字符不同,请检查“charCnt”的奇偶校验和字符位置是否匹配。如果是,则将“奇偶校验”增加 1。

第 5 步 – 如果当前字符与前一个字符相同,则将“charCnt”增加 1。

第 6 步 – 最后,如果“奇偶校验”值为偶数,则返回“Even”。否则,返回“奇数”。

示例

#include using namespace std;string getParity(string alpha) {    int parity = 0;    // Sort the string    sort(alpha.begin(), alpha.end());    // Traverse the string    for (int p = 0; p < alpha.size(); p++) {        int charCnt = 0;                // When we get different adjacent characters        if (alpha[p] != alpha[p + 1]) {            // Validating the odd and even parties            if (charCnt % 2 == 1 && (alpha[p] - 'a' + 1) % 2 == 1 || charCnt % 2 == 0 && (alpha[p] - 'a' + 1) % 2 == 0)                parity++;        } else {            charCnt++;        }    }    if (parity % 2 == 1)        return "ODD";    else        return "EVEN";}int main() {    string alpha = "abbbccdd";    cout << "The parity of given string's character's is " << getParity(alpha);    return 0;}

输出

The parity of given string's character's is EVEN

时间复杂度 – O(NlogN) 用于对字符串进行排序。

空间复杂度 – O(N) 对字符串进行排序。

第一种方法采用常量空间,而第二种方法采用动态空间对给定字符串进行排序。另外,第二种方法的时间成本较高,因此建议使用第一种方法以获得更好的性能。

以上就是字母位置和频率奇偶相同的字母数量的奇偶性的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:16:03
下一篇 2025年12月17日 22:16:14

相关推荐

  • 最长的子序列,其字符与子串相同,并且频率差最多为K

    在这个问题中,我们会找到子序列的最大长度,使其包含连续的字符,并且所有字符的频率差不会超过K。 我们需要找到给定字符串的所有可能的子序列,并检查它是否连续包含每个字符以及最大频率差以获得输出。 问题陈述– 我们给出了一个包含小写字母字符的字符串 alpha。另外,我们已经给出了正整数 K…

    2025年12月17日
    000
  • 计算要与频率大于其他字符频率之和的字符连接的字符串数量

    我们的主要目标是确定最多的字符串能够被连接起来,以确保只有一个字母的频率超过所有其他字符的总和,前提是有一个名为arr[]的包含M个字符串的数组。 在继续之前,让我们了解一些数组和字符串的基本概念。 数组就是一组相同数据类型的元素,存储在连续的内存区域中。 C编程语言中的数组具有固定的大小,这意味着…

    2025年12月17日
    000
  • 数组元素的频率是否为质数?

    Suppose we have one array. we have to count how many of the elements present in the array prime number of times. So if the array is {1, 2, 2, 0, 1, 5,…

    2025年12月17日
    000
  • C语言中main函数可以在什么位置

    C语言中main函数可以在任意位置。每一个C语言程序有且只有一个主函数(main()),且程序必须从main()函数开始,它是程序开始时调用的第一个函数。函数定义形式:【int main(void){}】。 c语言规定,在一个c程序中,main()函数可以在任意位置。 (推荐教程:c语言教程) 解析…

    2025年12月17日
    000
  • vivo手机录屏在哪里可以找到 vivo手机录屏教程

    php小编百草为您详细介绍vivo手机录屏功能的使用方法。在vivo手机上,您可以轻松找到录屏功能并进行设置,录制屏幕操作步骤。此外,我们还为您提供了vivo手机录屏的详细教程,让您更快上手,享受录屏带来的便利与乐趣! 1、从手机屏幕顶部下滑呼出控制中心,点击【屏幕录制】图标即可启动录屏。点击屏幕上…

    2025年11月28日 手机教程
    100
  • Oracle更改数据文件位置

    方法一:offline表空间 1、offline表空间:alter tablespace tablespace_name offline; 2、复制数据文件到新的目录; 3、rename修改表空间,并修改控制文件; 4、online表空间; 1、offline表空间zerone SQL select…

    数据库 2025年11月27日
    000
  • 谷歌优化安卓自设位置保持解锁功能 提升操作便捷与直观性

    谷歌安卓系统“可信位置”功能迎来重大升级,为用户带来更便捷的手机解锁体验!此功能允许用户在地图上设置多个虚拟围栏,手机在围栏内即可保持解锁状态,无需频繁操作。 过去,“可信位置”功能隐藏较深,查找不便。此次更新将其移至更易访问的系统设置菜单,并新增了便捷的开关按钮,用户可快速启用或禁用该功能。 界面…

    2025年11月19日
    100
  • linux查看php配置文件位置

    1、首先是可以打开终端输入find命令即可显示出php配置文件的路径 (免费视频教程分享:linux视频教程) 2、然后也可直接使用php内置的指令查找,使用如下命令,可以清楚的看出当前的php使用的配置文件 立即学习“PHP免费学习笔记(深入)”; 标贝悦读AI配音 在线文字转语音软件-专业的配音…

    2025年11月11日 运维
    000
  • MySQL数据文件存储位置的查看方法

    我们可能会有一个疑惑,那就是:当我们在本地(自己的电脑)安装完 mysql 之后,也创建了很多的数据库啊、表啊,也存储了很多的数据啊,但是这些内容都存储到哪里了呢?特别是,当我们需要直接操作这些数据文件的时候,翻遍了整个电脑,却找不到 mysql 的数据文件到底在哪里,这就有些坑爹啦!本文主要为大家…

    2025年11月6日 数据库
    000
  • 苹果手机不见了怎么找手机位置

    苹果手机不见了怎么找手机位置?对于许多人来说,手机丢失是一件令人焦虑的事情。但幸运的是,苹果手机提供了“查找我的iphone”功能,可以帮助用户追踪并定位手机的位置。无需担心,只需通过简单的操作,你就可以找回你丢失的苹果手机。接下来,让php小编新一为大家详细介绍一下如何利用这一功能找回手机位置。 …

    2025年11月6日 手机教程
    100
  • 奇迹世界起源集市位置在哪里-奇迹世界起源集市位置一览

    在《奇迹世界起源》这款游戏中,集市是一个关键的交互中心,在这里玩家可以获取丰富的资源。那么奇迹世界起源集市具体位于哪里呢?接下来就为大家带来一篇关于奇迹世界起源集市位置的详细攻略! 奇迹世界起源集市位置详解: 集市是众多玩家交易与互动的核心区域,也是快速积累财富的重要场所。想要掌握游戏中的经济命脉,…

    2025年11月1日 游戏教程
    000

发表回复

登录后才能评论
关注微信