回文

3.1 Valid Palindrome
描述
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring
cases.
For example,
”A man, a plan, a canal: Panama” is a palindrome.
”race a car” is not a palindrome.
Note: Have you consider that the string might be empty? This is a good question to ask during an
interview.

For the purpose of this problem, we define empty string as valid palindrome.

function isNums($str)
{
    $pattern='/^[0-9a-zA-Z]$/';
    if(preg_match($pattern,$str))
         return true;
    return false;

}
function isparma2($str)
{
  if(empty($str)) return false;
  $n=strlen($str);
  $i=0;$j=$n-1;
  while($i<$j)
  {
    if(!isNums($str[$i]))
         $i++;
    else if(!isNums($str[$j]))
        $j--;
    else if($str[$i]!=$str[$j])
            return false;
    else{   
         $i++;
         $j--;
      }     
   }
    return true;

}

3.5 Longest Palindromic Substring
描述
Given a string S, find the longest palindromic substring in S. You may assume that the maximum
length of S is 1000, and there exists one unique longest palindromic substring.

求最长的回文子串:经典的字符串编程题,可以采用动态规划来做。

动态规划重点在于动态方程的建立:

$dp[$i][$j]表示字符串从$i到$j之间是否是回文;

$dp[$i][$j]

 当$str[$i] != $str[$j]  $dp[$i][$j]=false;

 当$str[$i]==$str[$j]     $dp[$i][$j]=$j<$i+2||$dp[$i+1][$j-1]

function longPa($str)
{
  
  if(empty($str)) return -1;
  $n=strlen($str); 
  $dp=array_fill( 0 ,n ,array_fill( 0 ,n ,false));
  $start=0;
  $maxlen=0;
  for($i=$n-1;$i>=0;$i--)
  {
     for($j=$i+1;$j<$n;$j++){
          if($str[$i]==$str[$j]&&($j<$i+2||$dp[$i+1][$j-1])) {
            $ dp[$i][$j]=true;
            if($maxlen<$j-$i+1){
               $maxlen=$j-$i+1;
               $start=$i;
                }
         }else{
            $dp[$i][$j]=false;
          }
     }
}
return substr($str,$start,$maxlen);
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值