同构字符串

题意:

给定两个字符串 st ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = “egg”, t = “add”
输出:true

示例 2:

输入:s = “foo”, t = “bar”
输出:false

示例 3:

输入:s = “paper”, t = “title”
输出:true

提示:

  • 1 <= s.length <= 5 * 10^4
  • t.length == s.length
  • st 由任意有效的 ASCII 字符组成

题目来源: https://leetcode.cn/problems/isomorphic-strings/description/

解题方法:

方法一: 首先判断每个字符出现的次数,不一样就直接返回false;然后再做判断上一个字符和下一个字符是否一致一致就自增1;两个 flag不一致就返回false

function isIsomorphic($s, $t) {
    $len = strlen($s);
    $s_f = 0;
    $t_f = 0;
    for ($i = 0; $i < $len - 1; $i++) {
        if (substr_count($s, $s[$i]) != substr_count($t, $t[$i])) {
            return false;
        }
        if ($s[$i] == $s[$i + 1]) {
            $s_f++;
        }
        if ($t[$i] == $t[$i + 1]) {
            $t_f++;
        }
        if ($s_f != $t_f) {
            return false;
        }
    }
    return true;
}

参考:
作者:KID
链接:https://leetcode.cn/problems/isomorphic-strings/solutions/1216500/chun-fang-fa-po-jie-by-uqydvdgdqq-xokj/
来源:力扣(LeetCode)

方法二:比较每个字符首次出现的位置是否相同

function isIsomorphic($s, $t) {
    $len = strlen($s);
    if($len != strlen($t)) {
        return false;
    }
    for ($i = 0; $i < $len; $i++) {
        if(strpos($s, $s[$i]) !== strpos($t, $t[$i])) {
            return false;
        }
    }
    return true;
}

方法三: 哈希表匹配

function isIsomorphic($s, $t) {
    $lenA = strlen($s); //取字符串长度
    $lenB = strlen($t);
    if($lenA != $lenB) {
        return false;
    }

    $map1 = []; //哈希表
    $map2 = []; 
    for($i = 0; $i < $lenA; $i++){
        if(isset($map1[$s[$i]])){
            if($map1[$s[$i]] != $t[$i]){    //哈希表不匹配,返回false
                return false;
            }
        }else if(isset($map2[$t[$i]])){
            return false;
        }else{
            $map1[$s[$i]] = $t[$i]; //记录哈希表
            $map2[$t[$i]] = 1;
        }
    }
    return true;    //返回true
}

参考:
作者:ifelse
链接:https://leetcode.cn/problems/isomorphic-strings/solutions/494398/phpha-xi-biao-by-mek1986-8/
来源:力扣(LeetCode)

你可能感兴趣的:(PHP,算法,数据结构,php)