华为OD机试 2025B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+E卷+B卷+C卷+D卷)》。
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)。
二、输入描述
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
三、输出描述
输出输入字符串中含有该字符的个数。(不区分大小写字母)。
四、测试用例
测试用例1:
1、输入
Hello World
o
2、输出
2
3、说明
字符串"Hello World"中有2个’o’字符
测试用例2:
1、输入
ABCabc123
A
2、输出
2
3、说明
字符串中有’A’和’a’各一个,不区分大小写共2个
五、解题思路
- 使用Scanner读取输入:第一行是字符串,第二行是一个字符
- 将符串和目标字符都转换为小写,实现不区分大小写
- 遍历字符串中的每个字符,与目标字符比较,相同则计数器加1
- 输出计数结果
选择这种方法的原因是它简单直接且高效。由于只需要遍历一次字符串,没有必要使用更复杂的数据结构。字符串转小写后直接遍历比较是最直观的解决方案。
六、Java算法源码
public class OdTest {
public static void main(String[] args) {
// 创建Scanner对象读取输入
Scanner scanner = new Scanner(System.in);
// 读取第一行字符串
String inputString = scanner.nextLine();
// 读取第二行字符
char targetChar = scanner.nextLine().charAt(0);
// 统计字符出现次数(不区分大小写)
int count = countChar(inputString, targetChar);
// 输出结果
System.out.println(count);
// 关闭Scanner
scanner.close();
}
// 统计字符在字符串中的出现次数(不区分大小写)
private static int countChar(String str, char target) {
// 将字符串和目标字符都转为小写,实现不区分大小写
String lowerStr = str.toLowerCase();
char lowerTarget = Character.toLowerCase(target);
int count = 0;
for (int i = 0; i < lowerStr.length(); i++) {
if (lowerStr.charAt(i) == lowerTarget) {
count++;
}
}
return count;
}
}
七、效果展示
1、输入
Good morning!
g
2、输出
2
3、说明
字符串中有’G’和’g’各一个,不区分大小写共2个
🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2025 B卷 200分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+E卷+B卷+C卷+D卷)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。