华为机试题目解析:字符串处理与字符计数

需积分: 9 1 下载量 162 浏览量 更新于2024-08-04 收藏 151KB MD 举报
"华为机试相关的两道编程题目及其解答" 在华为的机试中,通常会遇到各种类型的编程题目,这里给出了两个例子。第一个题目(HJ1)是关于字符串处理,要求计算输入字符串中最后一个单词的长度。第二个题目(HJ2)则涉及到字符计数,需要找出输入字符串中特定字符出现的次数,且不区分大小写。 ### HJ1 - 字符串最后一个单词的长度 **问题描述:** 给定一个由空格分隔的单词组成的一行字符串,要求计算最后一个单词的长度。字符串长度小于5000,并且末尾不会有空格。 **输入描述:** 输入一行字符串,非空,长度小于5000。 **输出描述:** 输出一个整数,表示最后一个单词的长度。 **示例:** ``` 输入: hellonowcoder 输出: 8 ``` **解答:** ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); String[] s = str.split("\\s+"); // 使用正则表达式分割字符串 int length = s[s.length - 1].length(); System.out.println(length); } } ``` 在这个解答中,我们首先使用`Scanner`类读取一行输入,然后用`split("\\s+")`方法根据空格将字符串分割成单词数组。数组的最后一个元素就是最后一个单词,其长度即为所求。 ### HJ2 - 计算某字符出现次数 **问题描述:** 给出一个包含字母、数字和空格的字符串,以及一个字符,计算该字符在字符串中出现的次数,忽略大小写差异。数据范围为1到1000。 **输入描述:** 第一行输入字符串,第二行输入字符。 **输出描述:** 输出输入字符串中含有该字符的个数,不区分大小写。 **示例:** ``` 输入: ABCabc A 输出: 2 ``` **解答:** ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine().toLowerCase(); // 先将字符串转为小写 char c = sc.nextLine().toLowerCase().charAt(0); // 获取字符并转为小写 System.out.print(str.length() - str.replaceFirst(String.valueOf(c), "").length()); } } ``` 在这个解答中,我们首先将输入的字符串和字符都转为小写,然后使用`replaceFirst`方法替换掉第一个出现的目标字符,通过比较替换前后的字符串长度差即可得到目标字符的出现次数。 这两个题目展示了基本的字符串处理和字符计数技巧,对于准备华为机试或其他类似编程考试的考生来说,理解和掌握这类问题的解法是非常重要的。同时,需要注意的是,在实际编码时,应遵循良好的编程规范,例如合理命名变量,添加必要的注释等。