华为机考 ------ 计算某字符出现次数

描述

对于给定的由大小写字母、数字和空格混合构成的字符串 s,给定字符 c,按要求统计:

  • 若 c为大写或者小写字母,统计其大小写形态出现的次数和;
  • 若 c 为数字,统计其出现的次数。

保证字符 c 要么为字母、要么为数字。

输入描述:

第一行输入一个长度 1≦length(s)≦10³,由大小写字母、数字和空格构成的字符串 s。保证首尾不为空格。

第二行输入一个字符 c,保证 c 为大小写字母或数字。

输出描述:

在一行上输出一个整数,代表统计结果。
示例1

复制代码
输入:
HELLONowcoder123
o
输出:
3
说明:
由于 o 为小写字母,因此统计其大小写形态出现的次数和,即 3。

示例2

复制代码
输入:
H E L L O Nowcoder123
1
输出:
1

解题思路

这个问题是字符统计 问题,需要根据字符 c的类型进行不同的统计:

  1. 字符类型判断:

    • 如果 c是字母(大写或小写):统计这个字母的大小写形态的总出现次数

    • 如果 c是数字:只统计这个数字的出现次数

  2. 关键点:

    • 输入字符串可能包含字母、数字、空格

    • 首尾保证不为空格

    • 字符 c要么是字母要么是数字

    • 字符串长度不超过 10³(1000)

  3. 处理逻辑:

    • 遍历字符串的每个字符

    • 根据 c的类型进行匹配

    • 如果是字母,需要匹配不区分大小写的字符

    • 如果是数字,需要精确匹配

JavaScript 解决方案

复制代码
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let inputLines = [];
let lineCount = 0;

rl.on('line', (line) => {
    inputLines.push(line);
    lineCount++;
    
    if (lineCount === 2) {
        const s = inputLines[0];  // 原始字符串
        const c = inputLines[1];  // 目标字符
        
        let count = 0;
        
        // 判断c是否为字母
        if (/[a-zA-Z]/.test(c)) {
            // 字母:统计大小写形态
            const lowerC = c.toLowerCase();
            const upperC = c.toUpperCase();
            
            for (let i = 0; i < s.length; i++) {
                const char = s[i];
                if (char === lowerC || char === upperC) {
                    count++;
                }
            }
        } else {
            // 数字:精确匹配
            for (let i = 0; i < s.length; i++) {
                if (s[i] === c) {
                    count++;
                }
            }
        }
        
        console.log(count);
        rl.close();
    }
});
相关推荐
用户37203749260184 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能5 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师5 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端
alsmile5 小时前
AI友好的可视化图形引擎自我革命:Meta2d.js 2.0 历时一年全新重写,性能与多人协作全面升级
前端·开源·数据可视化
行思理5 小时前
Nginx 跨站请求(CORS)配置完全指南:从原理到生产实践
java·前端·nginx
粥里有勺糖5 小时前
视野修炼-技术周刊第137期 | 编程已经面目全非
前端·github·ai编程
IT_陈寒5 小时前
Python的列表推导式用不好真的会爆内存你知道吗
前端·人工智能·后端
moshuying6 小时前
块扩散 + GDN 改造:Clover 把「并行生成」塞进了 Agent 的长上下文里
前端·算法
kyriewen6 小时前
我算了笔账:AI 编程工具一年烧掉两台 MacBook
前端·人工智能·程序员
moshuying6 小时前
扩散模型开始写代码、开网页了:350 亿参数,速度比 Jev 快一倍
前端·算法