首页 > 试题广场 >

计算某字符出现次数

[编程题]计算某字符出现次数
  • 热度指数:1302484 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

数据范围:

输入描述:

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



输出描述:

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

示例1

输入

ABCabc
A

输出

2
推荐
import java.util.*;
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner s=new Scanner(System.in);
        String all="";
        String one="";
        char[] ac;
        char temp;
        int num=0;
        while(s.hasNext())
        {
            //s.toUpperCase(),String 转化为大写
            //s.toLowerCase(),String 转化为小写
            //String字符转换,s.toCharArray()与s.charAt(index)
            //char字符转换,String.valueOf(c)转化为String
        	all=s.nextLine();
            one=s.nextLine();
            //存放原来所有的
            ac=all.toCharArray();
            //存放要的字符
            //temp=one.charAt(0);
            for(int i=0;i<ac.length;i++)
            {
            	if(one.equalsIgnoreCase(String.valueOf(ac[i])))    
                    num++;
            }
            System.out.println(num);
        }
        
    }
    
}

编辑于 2017-03-04 16:05:10 回复(45)
let a = await readline(),b= await readline();
let c =  a.match(RegExp(b,'ig')) || [];
console.log(c.length)
编辑于 2024-03-04 16:26:27 回复(0)
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    let token = [];
    while(line = await readline()){
        // let tokens = line.split(' ');
        token.push(line);
    }
    token[0] = token[0].toUpperCase();
    token[1] = token[1].toUpperCase();
    // console.log(token)
    let a = 0;
    while(token[0].indexOf(token[1]) !== -1){
        a++;
        token[0] = token[0].substring(token[0].indexOf(token[1])+1,token[0].length)
    }
    console.log(a);

发表于 2023-06-03 15:41:29 回复(0)
const readline = require("readline");
const r1 = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let times = 0;
let sArr = new Set();

function getSArr(s) {
  sArr = new Array(256).fill(0);
  let len = s.length;
  for(let i=0; i<len; i++){
      let j = s[i].charCodeAt();
      sArr[j]++;
  }
}

r1.on("line", function (line) {
  let s = line.trim().toLowerCase();
  if (!times) {
      getSArr(s);
  } else {
      console.log(sArr[s.charCodeAt()]);
  }
  times++;
});


发表于 2022-10-11 22:10:37 回复(0)
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
const lines = []
rl.on('line', function (line) {
    lines.push(line);
    // 判断输入完成之后才做匹配输出
    if (lines.length == 2) {
        var patt = new RegExp(lines[1], 'gi');
        var res = lines[0].match(patt)
        if (res) {
            console.log(res.length);
        } else {
            console.log(0)
        }
    }
});

发表于 2022-04-14 11:40:55 回复(0)
思路很简单,就是这个ACM模式搞得我头大. 而且js语法很不熟悉....竟然不知道有toLowerCase()这个函数
var readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})
const lines = [];
rl.on('line',function(line){
    lines.push(line);
    if(lines.length === 2) rl.close(); // 当输入两行, 到达规定行数,就关闭输入流,触发close函数,
})
rl.on('close',function(){
    console.log(findCharNum(lines[0],lines[1]));
    lines.length = 0;
})

// 核心代码
function findCharNum(s,c){
    var count = 0;
    for(let i = 0;i < s.length; i++){
        if(s[i].toLowerCase() === c.toLowerCase()) count++;
    }
    return count;
}


发表于 2022-04-14 11:24:06 回复(0)
function getNum(str,str2){
    let a = str.toLowerCase()
    let b = str2.toLowerCase()
    let reg = RegExp(b,'g')
    let num = a.match(reg)||[]
    console.log(num.length)
}
getNum('ABCabc','A')
我不明白我用本地IDE测试是对的,在这里就是错的,纳尼?

发表于 2022-02-23 22:21:32 回复(0)
const readline = require('readline')
var rl = readline.createInterface({
    input:process.stdin,
    output:process.stdout
})
var arr=[]
var num = 0
rl.on('line',(line)=>{
    let newline = line.toLowerCase()
    arr.push(newline)
    if(arr.length>1){
        var index = arr[0].indexOf(arr[1])
        while(index!=-1){
            num++
            index = arr[0].indexOf(arr[1],index+1)
        }
        console.log(num)
    }
})

发表于 2021-09-03 21:35:21 回复(0)
var str = readline();
var word = readline();
function count(str, word){
    let lowerStrArr = str.toLowerCase().split('');
    let total = 0;
    for(let i of lowerStrArr){
        if(i == word.toLowerCase()){
            total += 1;
        }
    }
    return total;
}
console.log(count(str, word));
发表于 2021-06-08 10:11:48 回复(0)
let line = readline()
let target = readline()
function getCount (z, s) {
  z = z.toLowerCase()
  s = s.toLowerCase()
  let ret = 0
  for (let i = 0; i < z.length; i++) {
    if (z[i] === s) {
      ret++

    }
  } console.log( ret)
}
getCount(line,target)

发表于 2021-05-29 10:41:04 回复(0)

简述

因为不区分大小写,所以先把两个输入的字符串和查询次数的字母转成小写,然后把输入的字符串切割成数组,for循环比较数组元素与查询的字母,相同则次数+1,最后循环结束打印次数。
//  引入readline模块
var readline = require('readline');

//  创建一个readline接口实例
var readlineTest = readline.createInterface({

    input: process.stdin,
    output: process.stdout

});

var numberArray=[];//创建数值数组来存储每一行的数据
var numberArrayIndex=0;//初始化数值数组的索引
var lineCounts=2;//输入的行数,参数写死
var result=0;//初始化结果值
var str="";//整合式子
readlineTest.on('line', function(line){

    //将每一行的内容转换为数字后添加至数值数组numberArray
    numberArray[numberArrayIndex]=line;
    numberArrayIndex++;


    //当已输入的行数达到最大输入的行数时,结束readline.Interface实例
    if(numberArray.length==lineCounts){
        var strin =  numberArray[0].toLocaleLowerCase();
        var strkey = numberArray[1].toLocaleLowerCase();
        var n = 0;  //计算出现次数
        var strarry = strin.split("");
        for(var i = 0 ; i<strarry.length;i++){
            if(strkey == strarry[i]){
                n++;
            }
        }
        console.log(n)
//         console.log(strarry);
        //退出         
        readlineTest.close();
    }

});

//当readlineTest执行'close'命令时,输入流关闭,程序结束。
readlineTest.on('close', function() {

    process.exit(0);

});
发表于 2021-05-24 16:29:19 回复(0)
const str = readline()
const char = readline()
const fn = function (str, char) {
    // 转换小写
    const lowerStr = str.toLocaleLowerCase()
    const lowerChar = char.toLocaleLowerCase()
//     使用char来分割字符串,查看得到数组的长度 - 1 就是char出现的次数
    const arr = lowerStr.split(lowerChar)
    return arr.length - 1
}
console.log(fn(str,char))

发表于 2021-05-14 18:23:15 回复(0)
通过使用目标字符/子字符串来切割父字符串,切割的长度减1即为该字符/子字符串的数量
发表于 2021-05-13 21:39:49 回复(1)
/* 借鉴学习他人代码,补充注释*/
//第一部分,测试代码需要获取输入值,初始化设置,获取本题的输入值
//引入模块readline
const readline = require('readline');
//初始化函数,使用测试编辑器的输入值,调用自定义函数
function init(){
    //用ReadLine模块创建对象rl
    var rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    //声明输入值sourceString 和 targetString
    let sourceString = "";
    let targetString = "";
    //创建监听,输入值line,
    rl.addListener("line",(line)=>{
        if(sourceString===""){
            sourceString=line;
        }else{
            targetString=line;
            rl.close();
            getString(sourceString,targetString)
        }
    })
}
//调用init函数
init();

/*第二部分,自定义函数,实习本题功能写出一个程序,
接受一个由字母、数字和空格组成的字符串,和一个字母,
然后输出输入字符串中该字母的出现次数。不区分大小写。
*/
function getString(source,target){
    var reg = new RegExp(target,'ig');
    var arr = source.match(reg);
    //判断arr的值,未匹配到arr是null返回0,找到匹配值arr是数组返回数据长度
    var count = arr === null ? 0 : arr.length;
    //console.log() 打印放在return前
    console.log(count)
    return count;
}

发表于 2021-02-22 21:10:28 回复(0)
while(str=readline()){
   var arr=str.split('')
   var str=readline().toLowerCase()
   var num=0 
   for(var i=0;i<arr.length;i++){
       if(str==arr[i].toLowerCase()){
           num++
       }
   }
    console.log(num) 
}

发表于 2021-01-25 16:13:11 回复(0)
var str_1 = readline(); //获取第一行内数据 ABCabc
var str_2 = readline(); //获取第二行内数据 A
var num_need = 0;  //记录包含的个数
let need_Lower = str_2.toLowerCase();
let need_Bigger = str_2.toUpperCase();
for(let item of str_1){
    if(item == need_Lower || item == need_Bigger){
        num_need++
    }
}
console.log(num_need)

或者
var str_1 = readline(); //获取第一行内数据 ABCabc
var str_2 = readline(); //获取第二行内数据 A
var num_need = 0;  //记录包含的个数
let need_Lower = str_2.toLowerCase();
let need_Bigger = str_2.toUpperCase();
for(let item of str_1){
    if(str_1[i] == need_Lower || str_1[i] == need_Bigger){
        num_need++
    }
}
console.log(num_need)
发表于 2021-01-09 19:35:28 回复(0)
本题主要考察 split()方法 split可以把字符串切割成字符串数组
第一行readline()读取第一行字符串
第二行 readline()读取要找的字母
用该字母当做分割工具,然后.length出字符串数组长度
再减一就是被当做分割标准字母出现次数
let n = 'sdfsdvds' 
let a = 's'
console.log((n.split(a)))
发表于 2020-12-18 09:44:11 回复(0)
var line1 = readline()
var line2 = readline()
function strCount(line1,line2){
    let count=0
    line1.split('').forEach((item)=>{
        if(item.toLowerCase()==line2.toLowerCase()){
            count++
        }
    })
    return count
}
console.log(strCount(line1,line2))

发表于 2020-12-08 11:51:30 回复(0)
var strOne = readline();
var strT = readline();
var outArr = strOne.split('');
var num = 0;
for(var i=0; i < outArr.length; i++){
    if(strT.toLowerCase() === outArr[i].toLowerCase()){
        num++;
    }
}
 console.log(num);
发表于 2020-11-10 17:03:27 回复(0)
const str = readline();
const char = readline();
const reg = new RegExp(`${char}`,'igm');
console.log(str.match(reg)?str.match(reg).length:0);

发表于 2020-10-16 21:12:44 回复(0)