牛客题解 | 统计字符

news/2025/3/10 11:16:41/文章来源:https://www.cnblogs.com/wc529065/p/18762228

题目

题目链接

解题思路

  1. 基本思路:

    • 使用字典记录每个英文字符出现的次数。
    • 遍历字符串,更新字符计数。
    • 找到第一个出现三次的字符并返回。
  2. 实现方法:

    • 遍历字符串,逐个字符更新计数。
    • 检查计数是否达到三次。
    • 返回第一个达到三次的字符。

代码

#include <iostream>
#include <unordered_map>
using namespace std;class Solution {
public:char firstCharThreeTimes(const string& str) {unordered_map<char, int> charCount;for (char c : str) {if (isalpha(c)) {  // 只考虑字母charCount[c]++;if (charCount[c] == 3) {return c;}}}return '\0'; // 如果没有字符出现三次,返回空字符}
};int main() {string input;getline(cin, input);Solution solution;char result = solution.firstCharThreeTimes(input);if (result != '\0') {cout << result << endl;} else {cout << "No character appears three times." << endl;}return 0;
}
import java.util.*;public class Main {public static char firstCharThreeTimes(String str) {Map<Character, Integer> charCount = new HashMap<>();for (char c : str.toCharArray()) {if (Character.isLetter(c)) {  // 只考虑字母charCount.put(c, charCount.getOrDefault(c, 0) + 1);if (charCount.get(c) == 3) {return c;}}}return '\0'; // 如果没有字符出现三次,返回空字符}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();char result = firstCharThreeTimes(input);if (result != '\0') {System.out.println(result);} else {System.out.println("No character appears three times.");}}
}
class Solution:def firstCharThreeTimes(self, s):char_count = {}for c in s:if c.isalpha():  # 只考虑字母char_count[c] = char_count.get(c, 0) + 1if char_count[c] == 3:return creturn None  # 如果没有字符出现三次,返回Noneif __name__ == "__main__":input_str = input().strip()solution = Solution()result = solution.firstCharThreeTimes(input_str)if result is not None:print(result)else:print("No character appears three times.")

算法及复杂度

  • 算法:字符计数
  • 时间复杂度:\(\mathcal{O}(n)\),其中 \(n\) 为字符串长度
  • 空间复杂度:\(\mathcal{O}(m)\),其中 \(m\) 为不同字符的数量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896734.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YASKAWA点焊机器人维修的流程

在现代工业生产中,工业机器人发挥着至关重要的作用,而YASKAWA点焊机器人更是其中的佼佼者。然而,就像任何设备一样,机器人也会遭遇故障,这时候安川机器人维修、YASKAWA机器人维修以及工业机器人维修就显得尤为关键。一、机器人故障的常见类型YASKAWA点焊机器人在长时间的工…

Camstar中ToggleContainer标题样式改成建模框一样的

😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

Unpivot Columns与Pivot Columns的连用

一、背景 需要进行数据清洗二、 数据准备 三、操作步骤 3.1 上传数据 +3.2 UnpivotOtherColumns3.3 AddColumn 3.4 RemoveColumns3.5 Pivot

pd将字符串默认为NaN

一、背景 有些字符串会被pandas都城NaN。但是有时不想这么操作。二、数据准备 三、代码展示import pandas as pddf1 = pd.read_excel(NaNTest.xlsx) df2 = pd.read_excel(NaNTest.xlsx, na_values=[], keep_default_na=False)df = pd.concat([df1, df2], axis=1) print(df) 四、…

Power BI批量导入度量值

一、概述 1.1 适用场景 在PB中如果需要大量创建度量值,并对度量值的格式进行各种设置。如果一个个进行操作,则耗时耗力。 解决方法是将度量值的写在csv或者是txt文件中。然后读取文件,完成度量值的编写。1.2 关键节点编写大量度量值(我用Python,循环同一类形成度量值) 正则…

ERP如何高效管理委外加工?全流程拆解!

很多工厂都有委外加工的需求,比如某些零部件自己做成本太高、工艺太复杂,干脆交给外面的供应商去做。 问题来了,委外加工一旦管理不好,就会面临很多坑:订单交付时间不稳定,供应商老是拖 质量难以保证,返工率高 成本难控制,感觉钱花出去了但效果一般 物料进出混乱,不知…

一文全知晓,电脑上的hyper有何作用

随着虚拟现实房产展示的兴起,为购房者提供沉浸式的看房体验成为房产销售的新趋势。虚拟机技术在虚拟现实房产展示中,为房产展示软件提供稳定运行环境,实现房屋内部结构和装修的逼真呈现,让购房者足不出户即可看房。今天给大家介绍电脑上的hyper有何作用?电脑上的hyper有何…

【VMware vSphere】VMware 环境本地部署运行 DeepSeek-R1 大模型(纯 CPU)。

DeepSeek 是由中国杭州深度求索公司开发的智能 AI 助手,一个基于人工智能技术构建的虚拟助手,旨在通过自然语言处理和机器学习算法来理解并回应用户的问题与请求。它可以提供多种服务,包括但不限于信息检索、数据分析、语言翻译、知识问答以及日常生活的辅助建议等。 其实,…

Contest3897 - 计科23级算法设计与分析上机作业-01

题目链接 A.判断一个数能否被3,5,7整除 题面思路 直接模拟即可 示例代码 #include<bits/stdc++.h>using namespace std;#define ll long long //#define int ll #define pii pair<int, int> #define all(x) x.begin(),x.end() #define fer(i, m, n) for(int i = m;…

Ollama+DeepSeek+SlackBot

本文介绍了一种使用Slack聊天工具中的机器人SlackBot的API接口,实现本地化部署Ollama的DeepSeek大模型的远程通讯方案。相比于调用公网的API接口,数据隐私稍微好一点点。最终的方案应该是自建加密聊天工具+Ollama本地化部署,但是这个时间成本有点高,用户可以自行尝试。技术…

GreatSQL 8.0.32-27 GA (2025-3-10)

GreatSQL 8.0.32-27 GA (2025-3-10)版本信息发布时间:2025年3月10日版本号:8.0.32-27, Revision aa66a385910下载链接:https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.32-27用户手册:https://greatsql.cn/docs/8.0.32-27/改进提升 在GreatSQL 8.0.32-27版…

牛客题解 | 求整数的阶乘

牛客题库题解题目 题目链接 题解: 题目难度:中等难度 难点: 1.由于数据太大无法通过整数类型表示,因此用字符串存储结果 2.对于每个字符串从尾部开始进行简单的乘法,在其中考虑进位 知识点:大数相乘 思路: 1.构造multiply(int x, int res[], int res_size)函数,数组res…