dsai1991 2011-07-24 07:54
浏览 755
已采纳

如何检查两个字符串是否包含相同的字母?

$textone = "pate"; //$_GET
$texttwo = "tape";
$texttre = "tapp";

if ($textone ??? $texttwo) {
echo "The two strings contain the same letters";
}
if ($textone ??? $texttre) {
echo "The two strings NOT contain the same letters";
}

What if statement am I looking for?

  • 写回答

2条回答 默认 最新

  • dongzhu7329 2011-07-24 07:59
    关注

    I suppose a solution could be to, considering the two following variables :

    $textone = "pate";
    $texttwo = "tape";
    


    1. First, split the strings, to get two arrays of letters :

    $arr1 = preg_split('//', $textone, -1, PREG_SPLIT_NO_EMPTY);
    $arr2 = preg_split('//', $texttwo, -1, PREG_SPLIT_NO_EMPTY);
    

    Note that, as pointed out by @Mike in his comment, instead of using preg_split() like I first did, for such a situation, one would be better off using str_split() :

    $arr1 = str_split($textone);
    $arr2 = str_split($texttwo);
    


    2. Then, sort those array, so the letters are in alphabetical order :

    sort($arr1);
    sort($arr2);
    


    3. After that, implode the arrays, to create words where all letters are in alphabetical order :

    $text1Sorted = implode('', $arr1);
    $text2Sorted = implode('', $arr2);
    


    4. And, finally, compare those two words :

    if ($text1Sorted == $text2Sorted) {
        echo "$text1Sorted == $text2Sorted";
    }
    else {
        echo "$text1Sorted != $text2Sorted";
    }
    



    Turning this idea into a comparison function would give you the following portion of code :

    function compare($textone, $texttwo) {
        $arr1 = str_split($textone);
        $arr2 = str_split($texttwo);
    
        sort($arr1);
        sort($arr2);
    
        $text1Sorted = implode('', $arr1);
        $text2Sorted = implode('', $arr2);
    
        if ($text1Sorted == $text2Sorted) {
            echo "$text1Sorted == $text2Sorted<br />";
        }
        else {
            echo "$text1Sorted != $text2Sorted<br />";
        }
    }
    


    And calling that function on your two words :

    compare("pate", "tape");
    compare("pate", "tapp");
    

    Would get you the following result :

    aept == aept
    aept != appt
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥20 双硬盘安装Ubuntu后windows 无法挂载硬盘
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 如何使用Gephi软件和Python包中的GephiStreamer交互
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数