public static boolean isPalindrome(String string) {
		if (string == null || string.length() == 0)
			return false;
		
		String s = string.toLowerCase();
		String regex = "[a-z]";
		Pattern pattern = Pattern.compile(regex);
		
		int leftIndex = 0;
		int rightIndex = string.length() - 1;
		
		while (leftIndex < rightIndex) {
			// while leftIndex points to non-letter character, increment
			while (leftIndex < rightIndex && !pattern.matcher(s.subSequence(leftIndex, leftIndex + 1)).matches())
				leftIndex++;
			
			// while rightIndex points to non-letter character, decrement
			while (leftIndex < rightIndex && !pattern.matcher(s.subSequence(rightIndex, rightIndex + 1)).matches())
				rightIndex--;
			
			if (leftIndex < rightIndex && s.charAt(leftIndex++) != s.charAt(rightIndex--))
				return false;
		}
		return true;
	}