class Solution {
public function palindrome2 (string $s) : bool {
#aba - true
#abca -
#abc -
$n = strlen($s); #4
$p1 = 0;
$p2 = $n - 1 ; #3
$mid = floor(($n - 1) / 2); #1
$charRemoved = false;
while($p1 < $mid || $p2 > $mid)
{
# p1:1 < mid:1 OR
# p2:2 > mid:1
if ($s[$p1] == $s[$p2]) {
$p1++; #1
$p2--; #1
continue;
}
if($s[$p1+1] == $s[$p2] && $charRemoved ==false) {
$p1 = $p1 + 1;
$charRemoved = true;
continue;
} else if ($s[$p1+1] == $s[$p2] && $charRemoved == true) {
return false;
}
if($s[$p2-1] == $s[$p1] && $charRemoved ==false) {
$p2 = $p2 - 1;
$charRemoved = true;
continue;
} else if ($s[$p2-1] == $s[$p1] && $charRemoved == true) {
return false;
}
if(($s[$p1] != $s[$p2]) && ($p1 + 1 == $mid || $p2 - 1 == $mid) ) {
return false;
}
}
if($s[$p1] != $s[$p2] && (($n % 2) == 0)) {
return true;
}
return true;
}
}
$res = new Solution();
var_dump($res->palindrome2('abbca'));
Categories