【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)
【题目描述】
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
【示例一】
输入: s = "anagram", t = "nagaram" 输出: true
【示例二】
输入: s = "rat", t = "car" 输出: false
【提示及数据范围】
1 <= s.length, t.length <= 5 * 10的4次方
s
和t
仅包含小写字母
【代码】
// 方法一:哈希表class Solution {
public:bool isAnagram(string s, string t) {if (s.length() != t.length()) {return false;}vector<int> table(26, 0);for (int i = 0;i<s.size();i++) {table[s[i] - 'a']++;table[t[i] - 'a']--;}for (auto& ch: t) {if (table[ch - 'a'] != 0) {return false;}}return true;}
};// 方法二:排序class Solution {
public:bool isAnagram(string s, string t) {if (s.length() != t.length()) {return false;}sort(s.begin(), s.end());sort(t.begin(), t.end());return s == t;}
};