使用函数参数检查回文条件

时间:2013-06-21 13:20:08

标签: php

这是php代码使用函数参数来检查字符串是回文还是没有..帮我一步一步告诉我..过程正在发生...我无法理解

function Palindrome($string) {

    if ((strlen($string) == 1) || (strlen($string) == 0)) {
        echo " STRING IS PALINDROME";
    }

    else {

        if (substr($string,0,1) == substr($string,(strlen($string) - 1),1)) {
            return Palindrome(substr($string,1,strlen($string) -2));
        }
        else { echo " STRING IS NOT A PALINDROME"; }
    }
}


Palindrome("121");

5 个答案:

答案 0 :(得分:3)

此函数将字符串参数作为输入

它首先做的是检查递归基本情况。我们将回到那个

如果不满足基本情况,则使用此代码检查第一个字符是否与最后一个字符匹配:

if (substr($string,0,1) == substr($string,(strlen($string) - 1),1))

如果匹配,那么函数会再次自动调用自身,但这次删除了第一个和最后一个字符,这是用这一行完成的

return Palindrome(substr($string,1,strlen($string) -2));

如果第一个字符与最后一个字符不匹配,该函数会自动输出到html“STRING不是通过echo

的PALINDROME

现在回到我前面提到的基本情况,如果函数成功匹配并删除了第一个和最后一个字符,直到剩下一个或没有字符,那么该字符串已被确认为回文并且它回显该字符串。

如果您需要递归帮助,请告诉我,我会发布一个教程链接

答案 1 :(得分:1)

正在使用递归。

该程序以这种方式工作。如果这个单词没有字母或有一个字母,则它是一个回文。 '一个'是一个回文,所以''

因此,您的程序将检查第一个字母是否与给定单词中的最后一个字母匹配。 如果不是它不是回文 如果是,它将删除最后一个字母,第一个字母和最后一个字母并再次检查

所以当你说121 1.它将检查1和1,哪个匹配。所以它将用2调用相同的函数 2.然后它将删除1和1 它会检查2 由于2是一个字符,它是一个回文

如果你要求abba

  1. 它将检查a和a,哪个匹配。因此它将使用bb
  2. 调用相同的函数
  3. 将检查b和b
  4. 如果你要求phpcodephp

    1. 它将匹配p和p。因此它将使用hpcodeph
    2. 调用相同的函数
    3. 它将匹配h和h。因此它将使用pcodep
    4. 调用相同的函数
    5. 它将匹配p和p。因此它将使用代码
    6. 调用相同的函数
    7. 它将匹配不匹配的c和e。所以它不是回文

答案 2 :(得分:1)

使用递归函数检查字符串是否为回文。首先是通过strlen()函数检查字符串的长度是1还是0。如果是,则直接返回“是”,否则它将检查第一个字母,即带有最后一个字母的substr($ string,0,1),即substr($ string,(strlen($ string) - 1),1)。如果为真,则它将递归检查子字符串,排除第一个字母和最后一个字母,即Palindrome(substr($ string,1,strlen($ string)-2));.

答案 3 :(得分:0)

使用

function Palindrome($string) {
    return strrev($string) === $string;
}

var_dump(Palindrome("121"));

你的函数检查长度,如果它的0或1必须是回文。

然后将第一个字母与最后一个字母进行比较。它们是相同的,然后再重复一次。

所以121的电话

121不等于0或1个字符长,

先检查等于最后一次。 1 = 1

删除1并留下2

以2为参数重启。

2等于0或1个字符长,

return String是Palindrome。

我发布的功能是一种更容易检查的方法

答案 4 :(得分:0)

此算法检查字符串的第一个和最后一个字母是否相等。如果是这种情况,算法将裁剪字符串的第一个和最后一个字母,并以递归方式调用自身。这个,直到字符串为空(或只剩下一个字母) 例如字符串“blaalb” 使用Palindrome(“blaalb”)调用该算法。 如您所见,第一个和最后一个字母是相同的(“b”),因此这些字母被裁剪。 (如果没有,字符串将不是回文并且“STRING不是PALINDROME”将被返回)算法现在用Palindrome(“laal”)调用自己。再次,“l”被裁剪,然后“a” 不是字符串是空的并且“STRING是PALINDROME”被返回。 请记住,例如“blaxalb”也是回文,因此算法会检查字符串长度(strlen)是1还是0以确定它已完成