,根据或者在最坏情况下为O(n/2)之上的非递归方法(全搜索) 。这是更好的性能,当字符串是一个漫长的......这里的执行...
class PalindromeClass {
/**
* This method will run under or at O(n/2) with n = sentence.size()
* @param sentence is a given String sentence.
* @return true if the given sentence is a palindrome.
*/
public static boolean isPalindrome(String sentence) {
sentence = sentence.replaceAll("[^a-zA-Z0-9]","").toLowerCase();
char[] sentenceChars = sentence.toCharArray();
for (int i = 0; i < sentenceChars.length/2; i++) {
if (sentenceChars[i] != sentenceChars[sentenceChars.length - 1 - i]) {
return false;
}
}
return true;
}
有短,长的与错误的参数运行这个给你正确的价值观......
public static void main(String[] args) {
String wrong = "ABCA";
System.out.println("Is '" + wrong + "' a palindrome? ");
System.out.println(isPalindrome(wrong));
String none = "A'";
System.out.println("Is '" + none + "' a palindrome? ");
System.out.print(isPalindrome(none));
String a = "Madam, I'm Adam";
System.out.println("Is '" + a + "' a palindrome? ");
System.out.println(isPalindrome(a));
String b = "abba";
System.out.println("Is '" + b + "' a palindrome? ");
System.out.println(isPalindrome(b));
String toyota = "A Toyota. Race fast, safe car. A Toyota.";
System.out.println("Is '" + toyota + "' a palindrome? ");
System.out.println(isPalindrome(toyota));
String longestPalindrome = "Do good? I? No! Evil anon I deliver. I maim " +
"nine more hero-men in Saginaw, sanitary sword a-tuck, Carol, I -- lo! " +
"-- rack, cut a drowsy rat in Aswan. I gas nine more hero-men in Miami. " +
"Reviled, I (Nona) live on. I do, O God!";
System.out.println("Is '" + longestPalindrome + "' a palindrome? ");
System.out.println(isPalindrome(longestPalindrome));
}
}
这里是执行的输出...
Is 'ABCA' a palindrome? false
Is 'a' a palindrome? true
Is 'Madam, I'm Adam a palindrome?' true
Is 'abba a palindrome? true'
Is 'A Toyota. Race fast, safe car. A Toyota.' a palindrome? true
Is 'Do good? I? No! Evil anon I deliver. I maim nine more hero-men in Saginaw, sanitary sword a-tuck, Carol, I -- lo! -- rack, cut a drowsy rat in Aswan. I gas nine more hero-men in Miami. Reviled, I (Nona) live on. I do, O God!' a palindrome? true
为什么使用递归(这是不是高性能的),当你凑LD从双方,从四肢到中心穿过弦的边界? – 2011-04-30 02:11:43