How to check if two strings contain the same letters?

前端 未结 2 1308
别那么骄傲
别那么骄傲 2021-01-14 12:06
$textone = \"pate\"; //$_GET
$texttwo = \"tape\";
$texttre = \"tapp\";

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


        
相关标签:
2条回答
  • 2021-01-14 12:47

    use === and !==

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

    or

    if ($textone === $texttwo) {
        echo "The two strings contain the same letters";
    }
    
    if ($textone !== $texttwo) {
        echo "The two strings NOT contain the same letters";
    }
    
    0 讨论(0)
  • 2021-01-14 12:49

    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
    
    0 讨论(0)
提交回复
热议问题