2020-02-26 吴亲库里 库里的深夜食堂
**给定两个字符串 s 和 t,判断 t 是否是 s 的有效的字母异位词 **
****
有限的字母异位词是什么意思呢。说白了就是字符串的字母组成都是一样的,只是字母出现的位置不一样。那么首先他们的长度肯定是相同的,不同的就一定不是。原理其实就是可以使用 map 记录 s 字符串每个单词出现的频率,用 t 减少相同字符的频率,最后只要判断计数器中是否还存值即可。
/**
* @param String $s
* @param String $t
* @return Boolean
*/
function isAnagram($s, $t)
{
if (strlen($s) != strlen($t)) {
return false;
}
$data = [];
for ($i = 0; $i < strlen($s); $i++) {
if (!$data[$s[$i]]) $data[$s[$i]] = 0;
if (!$data[$t[$i]]) $data[$t[$i]] = 0;
$data[$s[$i]]++;
$data[$t[$i]]--;
}
foreach ($data as $value) {
if ($value) return false;
}
return true;
}