题解 | #计算某字母出现次数#

计算某字母出现次数

http://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1

题意整理

  • 输入一个由字母和数字以及空格组成的字符串,以及一个字母。
  • 输出字母在字符串中出现的次数。

方法一(计数+转化为小写)

1.解题思路

  • 定义一个变量count用于计数。将输入字符串以及指定字符变为小写形式。
  • 遍历整个字符串,如果当前字符与指定字符相等,则计数加一。
  • 返回最后count的结果,即为字符出现的次数。

动图展示: alt

2.代码实现

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        //标准输入
        Scanner sc=new Scanner(System.in);
        //输入字符串
        String s=sc.nextLine().toLowerCase();
        //输入字符
        char c=sc.next().toLowerCase().charAt(0);
        //计数
        int count=0;
        for(int i=0;i<s.length();i++){
            //如果出现的指定的字符,计数加一
            if(s.charAt(i)-c==0){
                count++;
            }
        }
        System.out.println(count);
    }
}

3.复杂度分析

  • 时间复杂度:需要遍历整个字符串,所以时间复杂度为O(n)O(n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)

方法二(计数+字符库函数)

1.解题思路

与方法一思路基本相同,不过使用字符库函数将当前字符转化为其大小或者小写,来与指定字符比较。

2.代码实现

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        //标准输入
        Scanner sc=new Scanner(System.in);
        //输入字符串
        String s=sc.nextLine();
        //输入指定字母
        char c=sc.next().charAt(0);
        //计数
        int count=0;
        for(int i=0;i<s.length();i++){
            //如果是指定字母,或者其大小写,则计数加一
            if(s.charAt(i)==c||Character.toUpperCase(s.charAt(i))==c||Character.toLowerCase(s.charAt(i))==c){
                count++;
            }
        }
        System.out.println(count);
    }
}

3.复杂度分析

  • 时间复杂度:需要遍历整个字符串,所以时间复杂度为O(n)O(n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论
PS:上面这种方法不适用于含有数字的情况,因为 0 - 9的ASCII为48 - 57, A - Z的ASCII为65 - 90, 数字+32,或大写字母-32,会有冲突
1 回复 分享
发布于 2022-02-25 19:12
确实有问题哈,已经改过来了,之前考虑不全面
1 回复 分享
发布于 2022-02-27 21:18
如果是数字,你用asc码会有纰漏
3 回复 分享
发布于 2022-02-21 23:51
PS:如果用next接收的话,好像不能计算空格个数。
1 回复 分享
发布于 2022-08-03 20:26
按字符分割成数组,数组长度-1即为重复个数
点赞 回复 分享
发布于 2023-02-07 11:12 广东
请注意char c=sc.next().toLowerCase().charAt(0); 这里应该是nextLine() 因为如果是后面有换行符就是有问题的。目前解法一报错。
点赞 回复 分享
发布于 2023-06-17 18:28 英国

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
评论
31
19
分享
牛客网
牛客企业服务