【华为笔试】对不起我错了!这个题目真的不好做#计算字符出现次数#

【华为笔试题目01】计算字符出现次数

描述

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

数据范围: 1≤n≤1000

输入描述:

第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。

输出描述:

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

解法思路

将输入字符串中的目标字符替换为空字符串""(注意区分空格和空字符是不同的ascii码),每替换一次,原输入字符串的长度就会减少一,替换结束后的字符串长度和原输入字符串长度的差,便是目标字符在输入字符串出现的次数

代码实现

import java.util.Scanner;
public class Main{
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        String srcStr = sc.nextLine().toLowerCase();
        String tarChar = sc.nextLine().toLowerCase();
        System.out.println(srcStr.length() - srcStr.replaceAll(tarChar,"").length());
    }
}

优缺点和拓展

优点:基于API编程,思路比较巧妙,可扩展性好

缺点:运行速度较慢于逐个字符做比较的查找方式

扩展:题目可以修改为统计目标字符串str在源字符串中出现的次数,整体思路相同,计算公式需要修改为:

count = (srcStr.length() - srcStr.replaceAll(tarStr,“”).length())/tarStr.length()

题目链接

https://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

坏码农来福

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

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

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

打赏作者

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

抵扣说明:

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

余额充值