给定两个字符串 s
和 t
,编写一个函数来判断它们是不是一组变位词(字母异位词)。
注意:若 s
和 t
中每个字符出现的次数都相同且字符顺序不完全相同,则称 s
和 t
互为变位词(字母异位词)。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
示例 3:
输入: s = "a", t = "a"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s
and t
仅包含小写字母1/** 2 * @param {string} s 3 * @param {string} t 4 * @return {boolean} 5 */ 6var isAnagram = function(s, t) { 7 8};
参考答案:
下面介绍两种常见的实现方法:
1/** 2 * @param {string} s 3 * @param {string} t 4 * @return {boolean} 5 */ 6var isAnagram = function(s, t) { 7 if(s === t || s.length != t.length) { 8 return false 9 } 10 let table = new Array(26).fill(0) 11 for(let i = 0; i < s.length; i ++) { 12 table[s.charCodeAt(i) - 'a'.charCodeAt(0)] ++ 13 } 14 for(let i = 0; i < t.length; i ++) { 15 table[t.charCodeAt(i) - 'a'.charCodeAt(0)] -- 16 if(table[t.charCodeAt(i) - 'a'.charCodeAt(0)] < 0) { 17 return false 18 } 19 } 20 return true 21};
我们可以对字符串 s 和 t 分别排序,看排序后的字符串是否相等。
1var isAnagram = function(s, t) { 2 return s.length == t.length && s !== t && [...s].sort().join('') === [...t].sort().join('') 3};
PS:面试题由 “前端面试题宝典(https://fe.ecool.fun/)” 整理和录入,未授权任何机构或其他刷题工具引用。推荐官网刷题,题库更全,题目答案不定时更新~
最近更新时间:2023-06-09