Java 函数:如何判断一个字符串是否为回文字符串?
发布时间:2023-05-30 03:31:07
一个回文字符串就是从左往右读和从右往左读都一样的字符串。例如“level”、“racecar”、“rotator”等都是回文字符串。
如何在 Java 编程语言中判断一个字符串是否为回文字符串呢?下面是一种简单的实现方式:
1. 首先,我们需要编写一个函数,命名为 isPalindrome,该函数输入一个字符串,返回一个布尔值。
2. 在函数体内,我们需要将输入的字符串转换为全部小写,以去除对大小写的敏感。
3. 然后,我们再定义两个指针:一个指向字符串的头部,一个指向字符串的尾部。这里我们使用两个整数变量分别表示两个指针的位置,并分别初始化为字符串的 个字符和最后一个字符的位置。
4. 接下来,我们使用一个循环来比较两个指针指向的字符是否相等。循环条件是头部指针的位置小于尾部指针的位置。
5. 在循环中,每次比较两个指针指向的字符是否相等。如果相等,就将头部指针后移,尾部指针前移。如果不相等,就说明字符串不是回文字符串,直接返回 false。
6. 如果循环结束了,说明字符串是回文字符串,返回 true。
下面是代码实现:
//将输入字符串全部转换为小写
str = str.toLowerCase();
//定义头部指针和尾部指针
int left = 0;
int right = str.length() - 1;
//逐个比较字符是否相等
while (left < right) {
//如果两个指针指向的字符不相等,直接返回 false
if (str.charAt(left) != str.charAt(right)) {
return false;
}
//移动指针
left++;
right--;
}
//所有字符都比较过了,说明字符串是回文字符串
return true;
}
测试代码如下:
//测试回文字符串
System.out.println(isPalindrome("level")); //true
System.out.println(isPalindrome("racecar")); //true
System.out.println(isPalindrome("rotator")); //true
System.out.println(isPalindrome("abba")); //true
System.out.println(isPalindrome("Able ,wLeeba")); //true
//测试非回文字符串
System.out.println(isPalindrome("Hello, world!"));//false
System.out.println(isPalindrome("Java is cool")); //false
}
输出结果如下:
true
true
true
true
true
false
false
这种实现方式时间复杂度为 O(n),其中 n 是输入字符串的长度。
