The fastest method of determining if a string is a palindrome

Bogdan Mursa picture Bogdan Mursa · Jan 28, 2014 · Viewed 12.5k times · Source

I need an algorithm that verify with the fastest possible execution time, if a string is a palindrome ( the string can be a proposition with uppercase or lowercase letter, spaces etc.). All of this in Java. I got a sample :

bool isPalindrome(string s) {
    int n = s.length();
    s = s.toLowerCase();
    for (int i = 0; i < (n / 2) + 1; ++i) {
        if (s.charAt(i) != s.charAt(n - i - 1)) {
            return false;
        }
    }
    return true;
}

I transformed the string in lowercase letter using .toLowerCase() function, but I don't know how much it affects the execution time .

And as well I don't know how to solve the problem with punctuation and spaces between words in a effective way.

Answer

CentaurWarchief picture CentaurWarchief · Jan 28, 2014

I think you can just check for string reverse, not?

StringBuilder sb = new StringBuilder(str);
return str.equals(sb.reverse().toString());

Or, for versions earlier than JDK 1.5:

StringBuffer sb = new StringBuffer(str);
return str.equals(sb.reverse().toString());