回文php有些案例是对的有些是错的
有人能检查我的代码吗?因为在某些情况下,此代码的输出是正确的,但当我尝试测试此输入时,输出不是我期望的回文php有些案例是对的有些是错的,php,Php,有人能检查我的代码吗?因为在某些情况下,此代码的输出是正确的,但当我尝试测试此输入时,输出不是我期望的 function checkPalindrome($inputString) { $arr1 = str_split($inputString); $arrlength = count($arr1); $max = $arrlength-1; for($min = 0; $min<$max; $min++){ if($arr1[$min] == $arr1[$max])
function checkPalindrome($inputString) {
$arr1 = str_split($inputString);
$arrlength = count($arr1);
$max = $arrlength-1;
for($min = 0; $min<$max; $min++){
if($arr1[$min] == $arr1[$max]){
$max--;
return true;
}
return false;
}
}
checkPalindrome("zzzazzazz");
函数checkPalindrome($inputString){
$arr1=str_split($inputString);
$arrlength=计数($arr1);
$max=$arrlength-1;
对于($min=0;$min而言,如果只有第一个字符与最后一个字符匹配,则返回true,而不是检查其余字符
if($arr1[$min] == $arr1[$max]){
$max--;
return true;
}
你的代码到处都是。有很多方法可以解决这个问题,我认为你甚至不需要将字符串拆分成一个字符数组。但是,假设你想这样做,下面是一个可行的实现:
$inputString = "HELLOOLLEH";
$arr1 = str_split($inputString);
$arrlength = count($arr1);
$isPalindrome = true;
for ($i = 0; $i < $arrlength / 2; ++$i) {
if ($arr1[$i] != $arr1[$arrlength-$i-1]) {
$isPalindrome = false;
break;
}
}
echo $isPalindrome;
$inputString=“HELLOOLLEH”;
$arr1=str_split($inputString);
$arrlength=计数($arr1);
$isPalindrome=true;
对于($i=0;$i<$arrlength/2;++$i){
如果($arr1[$i]!=$arr1[$arrlength-$i-1]){
$isPalindrome=false;
打破
}
}
echo$isPalindrome;
基本思想是沿着字符串走下去,从两端开始,逐个比较两边的字符。如果我们发现两个字符不相同,那么字符串就不能是回文。请注意,这种方法既包括偶数长度的回文,也包括奇数长度的回文。对于奇数长度的回文,中心字符字符可以是任何东西,我编写的循环甚至不会检查它。一种更简单的方法,使用和删除除A-z字符以外的所有字符,然后使用小写
<?php
function checkPalindrome($str) {
$str = strtolower(preg_replace('/[^a-z]+/i', '', $str));
return $str == strrev($str);
}
// test, few taken from http://www.palindromelist.net
$palindromes = [
'A but tuba.',
'madam',
'hannah',
'A dog, a plan, a canal: pagoda.',
'Nurses run',
'A dog! A panic in a pagoda!',
'A lad named E. Mandala',
'A man, a plan, a canal: Panama.',
'A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal-Panama!',
'A new order began, a more Roman age bred Rowena.',
'Decaf and DNA faced.',
'Dennis and Edna sinned.',
'Devil never even lived.',
'Dr. Awkward',
'On a clover, if alive, erupts a vast, pure evil; a fire volcano.',
'See, slave, I demonstrate yet arts no medieval sees.',
'Star? Come, Donna Melba, I’m an amiable man – no Democrats!',
'Swap God for a janitor; rot in a jar of dog paws.',
];
foreach ($palindromes as $str) {
echo $str.(checkPalindrome($str) ? ' is' : 'is not').' a palindrome'.PHP_EOL;
}
您可以将要检查的字符串作为参数提供给此函数:
function checkPalindrome($text) {
//Eliminate punctuation and spaces
$str = preg_replace('/[^a-z]+/i', '', $text);
// Force lower case
$str = strtolower($str);
//compare
$verdict = $str == strrev($str) ? '"' . $text . '" ' . 'is a palindrome' : '"' . $text . '"' . ' is not a palindrome';
return $verdict;
}
echo checkPalindrome("Red rum, sir, is murder");
请参见演示
function checkPalindrome($text) {
//Eliminate punctuation and spaces
$str = preg_replace('/[^a-z]+/i', '', $text);
// Force lower case
$str = strtolower($str);
//compare
$verdict = $str == strrev($str) ? '"' . $text . '" ' . 'is a palindrome' : '"' . $text . '"' . ' is not a palindrome';
return $verdict;
}
echo checkPalindrome("Red rum, sir, is murder");