function CanStringBeRearrangedAsPalindrome($str) {
$ascii_count = array_fill(0,256,0);
for ($i = 0; $i < strlen($str); $i++) {
$ascii_count[ord($str[$i])]++;
}
$odd = 0;
for ($i = 0; $i < 256; $i++) {
if (($ascii_count[$i] & 1) != 0) {
$odd++;
}
if ($odd > 1) return false;
}
return true;
}
$str = "abcdacdb";
$result = CanStringBeRearrangedAsPalindrome($str) ? "Yes" : "No";
echo $result . "\n";
$result = CanStringBeRearrangedAsPalindrome("abcca") ? "Yes" : "No";
echo $result . "\n";
$result = CanStringBeRearrangedAsPalindrome("abcb") ? "Yes" : "No";
echo $result . "\n";
/*
run:
Yes
Yes
No
*/