Java函数:如何检测给定字符串是否是回文?
回文是指正着读和倒着读都一样的单词、短语或数字。例如:racecar, level, noon等都是回文。在Java中,我们可以编写一个函数来检测给定的字符串是否是回文。
该函数可以根据以下算法进行实现:
1. 定义一个指向字符串开头的指针和一个指向字符串结尾的指针。
2. 依次比较这两个指针指向的字符,如果相等,则继续向前移动这两个指针;如果不相等,则返回false。
3. 当指针相遇时,说明这个字符串是回文,返回true。
下面是一个完整的Java代码实现:
public static boolean isPalindrome(String str){
int left = 0; //指向字符串开头的指针
int right = str.length() - 1; //指向字符串结尾的指针
while(left < right){ //只需判断指针未相遇的情况
if(str.charAt(left) != str.charAt(right)){ //比较两个指针指向的字符
return false; //字符不相等,不是回文
}
left++; //指针向前移动
right--;
}
return true; //指针相遇,是回文
}
该函数采用了双指针法,时间复杂度为O(n/2),空间复杂度为O(1)。如果给定的字符串长度为n,则该函数的时间复杂度为O(n)。
下面是一个使用该函数的示例:
String str1 = "racecar";
String str2 = "level";
String str3 = "hello";
System.out.println(isPalindrome(str1)); //true
System.out.println(isPalindrome(str2)); //true
System.out.println(isPalindrome(str3)); //false
该示例用于检测三个字符串是否是回文。str1和str2都是回文,第三个字符串不是回文。使用该函数,输出结果为true,true,false。
