PHP版 判断两个字符串为互换词语

/ 0评 / 1

指定两个字符串,通过程序的判断两个字符串是否互为变型词。

    $str = 'abcd';
    $compare_str = 'cdab';
    compare_func($str,$compare_str); //此时返回true
    //或
    $str = '123a';
    $str = '123';
    compare_func($str,$compare_str); //此时返回false

解题思路:

function compare_func($str,$compare_str)
{
    $strl = strlen($str);
    $compare_strl = strlen($compare_str);
    // 若两个字串的长度等于零或不一致返回false
    if ($strl + $compare_strl === 0 || $strl !== $compare_strl)
        return false;
    // 存储出现过的字符
    $ascii = [];
    for ($i = 0;$i < $strl;$i++) {
        // 以每个字符的Ascii码作为下标
        $ascii[ord($str[$i])] ++;
    }
    for ($i = 0;$i < $strl;$i++) {
        // 这里如果已经等于零了,再自减必然为负数,那么直接返回false
        if ( $ascii[ord($compare_str[$i])] -- == 0 ){
            return false;
        }
    }
    return true;
}