Categories
General

Palindrome 2



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'));

Leave a Reply