华为OD机试 - 计算某字符出现次数(Python/JS/C/C++ 2025 B卷 100分)

在这里插入图片描述

2025B卷华为OD机试统一考试题库清单(持续收录中)以及考点说明(Python/JS/C/C++)

专栏导读

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。

一、题目描述

写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)。

二、输入描述

第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。

三、输出描述

输出输入字符串中含有该字符的个数。(不区分大小写字母)。

四、测试用例

测试用例1:

1、输入

Hello World
o

2、输出

2

3、说明

字符串"Hello World"中有2个’o’字符

测试用例2:

1、输入

ABCabc123
A

2、输出

2

3、说明

字符串中有’A’和’a’各一个,不区分大小写共2个

五、解题思路

  1. 使用Scanner读取输入:第一行是字符串,第二行是一个字符
  2. 将符串和目标字符都转换为小写,实现不区分大小写
  3. 遍历字符串中的每个字符,与目标字符比较,相同则计数器加1
  4. 输出计数结果

选择这种方法的原因是它简单直接且高效。由于只需要遍历一次字符串,没有必要使用更复杂的数据结构。字符串转小写后直接遍历比较是最直观的解决方案。

六、Python算法源码

# 读取输入的字符串
input_string = input()
# 读取目标字符
target_char = input()

# 将输入的字符串和目标字符都转为小写,以实现不区分大小写
lower_str = input_string.lower()
lower_target = target_char.lower()

# 统计字符出现次数
count = lower_str.count(lower_target[0])  # 取目标字符的第一个字符

# 输出结果
print(count)

七、JavaScript算法源码

const readline = require('readline');

// 创建readline接口实例
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let inputString = '';  // 存储第一行输入的字符串
let lineCount = 0;     // 记录当前读取的行数

// 监听行输入事件
rl.on('line', (line) => {
    if (lineCount === 0) {
        // 读取第一行字符串
        inputString = line;
        lineCount++;
    } else if (lineCount === 1) {
        // 读取第二行字符(取第一个字符)
        const targetChar = line.charAt(0);
        
        // 将输入的字符串和目标字符都转为小写,以实现不区分大小写
        const lowerStr = inputString.toLowerCase();
        const lowerTarget = targetChar.toLowerCase();
        
        // 统计字符出现次数
        let count = 0;
        for (let i = 0; i < lowerStr.length; i++) {
            if (lowerStr[i] === lowerTarget) {
                count++;
            }
        }
        
        // 输出结果
        console.log(count);
        
        // 关闭读取接口
        rl.close();
    }
});

八、C算法源码

#include <stdio.h>
#include <string.h>
#include <ctype.h>  // 包含字符处理函数

#define MAX_LENGTH 1000  // 定义字符串最大长度

int main() {
    char inputString[MAX_LENGTH];  // 存储输入的字符串
    char targetChar;               // 存储目标字符
    
    // 读取第一行字符串
    fgets(inputString, MAX_LENGTH, stdin);
    // 移除末尾的换行符
    size_t len = strlen(inputString);
    if (len > 0 && inputString[len-1] == '\n') {
        inputString[len-1] = '\0';
        len--;  // 更新长度
    }
    
    // 读取第二行字符
    char targetLine[3];  // 多留一些空间以防意外
    fgets(targetLine, 3, stdin);
    targetChar = targetLine[0];
    
    // 统计字符出现次数(不区分大小写)
    int count = 0;
    for (int i = 0; i < len; i++) {
        if (tolower(inputString[i]) == tolower(targetChar)) {
            count++;
        }
    }
    
    // 输出结果
    printf("%d\n", count);
    
    return 0;
}

九、C++算法源码

#include <iostream>
#include <string>
#include <algorithm>  // 包含transform函数

int main() {
    std::string inputString;  // 存储输入的字符串
    char targetChar;          // 存储目标字符
    
    // 读取第一行字符串
    std::getline(std::cin, inputString);
    
    // 读取第二行字符
    std::string targetLine;
    std::getline(std::cin, targetLine);
    targetChar = targetLine[0];
    
    // 将输入的字符串和目标字符都转为小写
    std::string lowerStr = inputString;
    std::transform(lowerStr.begin(), lowerStr.end(), lowerStr.begin(), ::tolower);
    char lowerTarget = std::tolower(targetChar);
    
    // 统计字符出现次数
    int count = 0;
    for (char c : lowerStr) {
        if (c == lowerTarget) {
            count++;
        }
    }
    
    // 输出结果
    std::cout << count << std::endl;
    
    return 0;
}

🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2025 B卷 200分)

🏆本文收录于,华为OD机试真题(Python/JS/C/C++)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值