0
点赞
收藏
分享

微信扫一扫

笔试算法—《字母的出现次数》


题目

  • 题目描述
    写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写。
  • 输入描述:
    第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。
  • 输出描述:
    输出输入字符串中含有该字符的个数。
  • 示例1
  • 输入
    ABCabc
    A
  • 输出
    2

题解:

  • 第一种解法(我自己的解法):
    本以为自己的这种解法很慢,结果发现是因为使用的Scanner scanner=new Scanner这种输入,这种输入会很慢,而且内存消耗较多。改为 BufferedReader后运行结果就 好了

public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(new InputStreamReader(System.in));
String str = scanner.nextLine().toLowerCase();
String character = scanner.nextLine().toLowerCase();
int i = str.indexOf(character);
int count = 0;
while (i != -1) {
count++;
str = str.substring(i + 1);
i = str.indexOf(character);
}
System.out.println(count);
scanner.close();
}

笔试算法—《字母的出现次数》_算法

public static void main(String[] args) throws IOException {
BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
String str = scanner.readLine().toLowerCase();
String character = scanner.readLine().toLowerCase();
int i = str.indexOf(character);
int count = 0;
while (i != -1) {
count++;
str = str.substring(i + 1);
i = str.indexOf(character);
}
System.out.println(count);
scanner.close();
}

笔试算法—《字母的出现次数》_leetcode_02

  • 第二种方法(其他优秀速度和内存的解法):

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] chars1 = br.readLine().toLowerCase().toCharArray();
char[] chars2 = br.readLine().toLowerCase().toCharArray();
int count = 0;
for (int i = 0; i < chars1.length; i++) {
if ((chars1[i] >= 65 || chars1[i] < 90) && (chars1[i] == chars2[0])) {
count++;
}
}
System.out.println(count);
}

笔试算法—《字母的出现次数》_算法_03


举报

相关推荐

0 条评论