Java函数:如何判断给定的字符串是否为回文?
回文是指正着和倒着读都一样的单词、短语或数字序列,比如“level”、“radar”、“121”等。在Java程序中,我们可以编写一个函数来判断给定的字符串是否为回文。下面是一个简单的实现方法:
public static boolean isPalindrome(String str) {
// 将字符串全部转换为小写字母
str = str.toLowerCase();
// 将字符串转换为字符数组
char[] chArr = str.toCharArray();
// 定义左右两个指针
int left = 0, right = chArr.length - 1;
while (left < right) {
// 如果左右两个字符不相等,则不是回文
if (chArr[left] != chArr[right]) {
return false;
}
// 左右指针向中间移动
left++;
right--;
}
// 如果全部字符都匹配,那么是回文
return true;
}
这个函数接收一个字符串作为参数,首先将字符串全部转换为小写字母,然后将字符串转换为字符数组。我们定义左右两个指针,分别从字符串的开头和结尾开始扫描,每次比较左右两个指针所指的字符是否相等。如果不相等,则说明不是回文,直接返回false。否则,左右指针向中间移动,继续比较下一个字符。当左右指针相遇时,说明全部字符都匹配,是回文,返回true。这个算法的时间复杂度是O(n/2),空间复杂度是O(n),其中n是字符串的长度。
测试代码如下:
public static void main(String[] args) {
System.out.println(isPalindrome("level")); // true
System.out.println(isPalindrome("LeVel")); // true
System.out.println(isPalindrome("12321")); // true
System.out.println(isPalindrome("radar")); // true
System.out.println(isPalindrome("hello")); // false
}
运行结果如下:
true
true
true
true
false
我们可以看到,这个函数能够正确地判断给定的字符串是否为回文。在实际开发中,我们可以利用这个函数来解决一些实际问题,比如判断用户输入的密码是否为回文,或者判断一个文本是否为回文。
