Java面试准备:如何检查字符串是否含字符数组元素并统计元音数量
Hey there! 既然你正在重拾Java准备面试,我来帮你把那段统计元音的Python代码转换成Java实现,顺便梳理下关键知识点,帮你快速回忆~
统计句子中元音字母数量的Java实现
首先先还原你给出的Python代码片段(看起来你还没写完else部分,不过核心逻辑已经清晰了):
vowels = ('a', 'e', 'i', 'o', 'u') #tuple containing vowels sentence = "Refreshing my memory on java" vowels_count = 0; consonant_count = 0; for s in sentence: if s in vowels: vowels_count += 1 # 这里应该补充辅音统计逻辑(注意排除非字母字符)
基础循环实现(最贴近你的Python逻辑)
这是最直观的写法,和你的Python思路完全对齐,适合面试时展示基础语法掌握:
public class VowelCounter { public static void main(String[] args) { // 用Set存储元音,查询效率更高(O(1)),也可以用数组/字符串判断 java.util.Set<Character> vowels = java.util.Set.of('a', 'e', 'i', 'o', 'u'); String sentence = "Refreshing my memory on java"; int vowelCount = 0; int consonantCount = 0; // 遍历字符串的每个字符 for (char c : sentence.toCharArray()) { // 统一转小写,避免遗漏大写元音(比如原句中的'E') char lowerCaseChar = Character.toLowerCase(c); if (vowels.contains(lowerCaseChar)) { vowelCount++; } else if (Character.isLetter(lowerCaseChar)) { // 只统计字母类的辅音,排除空格、数字等非字母字符 consonantCount++; } // 非字母字符直接跳过 } System.out.println("元音数量: " + vowelCount); System.out.println("辅音数量: " + consonantCount); } }
简化写法(Java 8+ Stream API)
如果面试时想展示对现代Java特性的了解,可以用Stream流实现,代码更简洁:
import java.util.Set; public class VowelCounterStream { public static void main(String[] args) { Set<Character> vowels = Set.of('a', 'e', 'i', 'o', 'u'); String sentence = "Refreshing my memory on java"; // 统计元音 long vowelCount = sentence.chars() .mapToObj(c -> Character.toLowerCase((char) c)) .filter(vowels::contains) .count(); // 统计辅音 long consonantCount = sentence.chars() .mapToObj(c -> Character.toLowerCase((char) c)) .filter(c -> Character.isLetter(c) && !vowels.contains(c)) .count(); System.out.println("元音数量: " + vowelCount); System.out.println("辅音数量: " + consonantCount); } }
面试高频知识点提醒
- 大小写处理:一定要统一转换为小写/大写,否则会漏统计
A/E这类大写元音 - 集合选择:用
Set存储元音比数组更高效,因为contains()方法的时间复杂度是O(1) - 边界情况:别忘记排除非字母字符(比如空格、符号),否则会把这些误统计为辅音
- Stream API:Java 8+的流操作是面试常考点,能体现你对现代Java的掌握程度
内容的提问来源于stack exchange,提问作者answerSeeker
相关产品推荐
相关产品推荐

