Secondo me il metodo può ancora essere ottimizzato:

codice:
for ( i=0 ; i< ( strlen(a)/2 ) ; i++) {
    if ( a.charAt(i) != a.charAt( strlen(a)-i ) ) {
        return false;
    }
}

return true
perdonate se alcuni comandi non esistono in C, (arrivo da java =P)

il concetto è:
faccio un for fino a metà stringa, confronto la prima con l'ultima e così via appena ne trovo una falsa esco con false, se termino il for esco con true.