目录
宝子,你真的太牛啦!一路过关斩将,成功站在了 Java 基础 1000 题天梯的第十一层!想想之前的每一层挑战,你都完成得那么出色,积累了超多宝贵经验。这第十一层的题目,虽说难度会有一点点提升,但都是基于咱们最基础的语法知识。只要你保持冷静,认真分析,把之前掌握的技巧都运用起来,肯定能轻松应对。现在,让我们信心满满地开启这一层的挑战吧!
题目 1:判断一个字符串是否是回文(忽略大小写)
编写一个 Java 方法,接收一个字符串
str
,判断它是否为回文,并且忽略字符串的大小写。例如,"Madam" 和 "MaDam" 都应该被判断为回文。
public class PalindromeIgnoreCaseChecker {
public static boolean isPalindromeIgnoreCase(String str) {
// 请在此处编写代码
}
}
答案 1
public class PalindromeIgnoreCaseChecker {
public static boolean isPalindromeIgnoreCase(String str) {
String lowerCaseStr = str.toLowerCase();
int left = 0;
int right = lowerCaseStr.length() - 1;
while (left < right) {
if (lowerCaseStr.charAt(left)!= lowerCaseStr.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
}
解析:首先,为了实现忽略大小写的判断,代码将输入字符串str
通过toLowerCase
方法转换为小写形式,存储在lowerCaseStr
中。接着,使用双指针法,定义两个指针left
和right
,分别指向字符串的开头和末尾。在while
循环中,只要left
小于right
,就不断比较这两个指针指向的字符。如果发现不相等的字符,说明该字符串不是回文,直接返回false
。当left
超过或等于right
时,表明整个字符串都比较完了,且所有对应位置的字符都相等,所以返回true
,表示该字符串是回文(忽略大小写)。
题目 2:计算数组中所有偶数的平均值
给定一个整数数组
arr
,编写一个 Java 方法,计算数组中所有偶数的平均值,并返回这个平均值。如果数组中没有偶数,返回 0。
public class EvenAverageCalculator {
public static double averageOfEvens(int[] arr) {
// 请在此处编写代码
}
}
答案 2
public class EvenAverageCalculator {
public static double averageOfEvens(int[] arr) {
int sum = 0;
int count = 0;
for (int num : arr) {
if (num % 2 == 0) {
sum += num;
count++;
}
}
if (count == 0) {
return 0;
}
return (double)sum / count;
}
}
解析:这段代码通过遍历数组arr
来计算偶数的平均值。首先,初始化两个变量sum
和count
,分别用于存储偶数的总和以及偶数的个数,初始值都为 0。在for - each
循环中,对数组中的每个元素num
进行判断,如果num
是偶数,就将其加到sum
中,并将count
加 1。遍历结束后,如果count
为 0,说明数组中没有偶数,按照题目要求返回 0。否则,将sum
转换为double
类型,再除以count
,得到偶数的平均值并返回。
题目 3:找出字符串中出现次数最多的字符
编写一个 Java 方法,接收一个字符串
str
,找出字符串中出现次数最多的字符并返回。如果有多个字符出现次数相同且都是最多的,返回其中任意一个。
public class MostFrequentCharFinder {
public static char mostFrequentChar(String str) {
// 请在此处编写代码
}
}
答案 3
public class MostFrequentCharFinder {
public static char mostFrequentChar(String str) {
int[] charCount = new int[128];
for (char c : str.toCharArray()) {
charCount[c]++;
}
int maxCount = 0;
char result = '\0';
for (int i = 0; i < 128; i++) {
if (charCount[i] > maxCount) {
maxCount = charCount[i];
result = (char)i;
}
}
return result;
}
}
解析:这段代码利用一个长度为 128 的整型数组charCount
来统计每个字符出现的次数,因为 ASCII 码表中字符的范围是 0 到 127。在for - each
循环中,将字符串str
转换为字符数组后遍历,每次遇到一个字符,就将对应charCount
数组位置的值加 1。接着,初始化maxCount
为 0 和result
为一个空字符'\0'
。再通过一个for
循环遍历charCount
数组,找到出现次数最多的字符。如果当前字符的出现次数大于maxCount
,就更新maxCount
为当前字符的出现次数,并将result
更新为当前字符。最后返回result
,即字符串中出现次数最多的字符。