2019-03-17 吴亲库里 库里的深夜食堂
同构字符串。给定两个字符串,判断他们是否是同构字符串。所有出现的字符都必须用另一个字符替代,并且字符串的顺序不能改变,两个不同字符不能同时映射到一个字符上,但是可以映射自己本身。
就像上面说的demo中用d映射g,e映射a所有是同构字符串。demo2中第一次a映射o,第二次变成r映射o,这就违反了两个字符不能同时映射一个字符上的原则,所有false。可以设置两个数组,分别用来记录两个字符串出现情况,然后遍历字符串,取两个字符串的值在数组中查找,如果不相等 ,说明他们就不是同构字符串,否则接着比较下一位,道理很简单
/**
* @param String $s
* @param String $t
* @return Boolean
*/
function isIsomorphic($s, $t) {
$a=[];
$b=[];
for($i=0;$i<strlen($t);$i++){
if($a[$s[$i]] != $b[$t[$i]]) return false;
$a[$s[$i]]=$i+1;
$b[$t[$i]]=$i+1;
}
return true;
}