palindrome optimized
by rishul matta
JavaScript
function isPalindrome(A){
if (!A) {
return 0;
}
if (A.length == 1) {
return 1;
}
var i = 0;
var str = [];
reg = new RegExp("[a-z0-9]{1}", "i");
var forwardDirection = -1;
var backwardDirection = A.length;
var next = (function () {
return function () {
while(forwardDirection < A.length) {
forwardDirection++;
var ch = A.charAt(forwardDirection).toLowerCase();
if (reg.test(ch)) {
return ch;
}
}
}
})();
var prev = (function () {
return function () {
while(backwardDirection > 0) {
backwardDirection--;
var ch = A.charAt(backwardDirection).toLowerCase();
if (reg.test(ch)) {
return ch;
}
}
}
})();
while (i < A.length) {
var forwardCh = next();
var backwardCh = prev();
if (backwardDirection >= forwardDirection){
if (forwardCh != backwardCh) {
return 0;
}
} else {
return 1;
}
}
return 1;
}
//isPalindrome("A man, a plan, a canal: Panama")
//isPalindrome(".,")
//isPalindrome("madam")