给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
- #include
- #include
- using namespace std;
-
- /*
- * 有效的字母异位词问题
- * 定义一个26个字符长的数组,迭代计算s中字符的个数,
- * 如果再将t中的相同字符个数减去,结果小于0则输出false
- */
- bool isAnagram(string s, string t) {
- if (s.size() != t.size()) {
- return false;
- }
- vector<int> cnt(26);
- for (auto c : s) {
- cnt[c - 'a']++;
- }
- for (auto c : t) {
- cnt[c - 'a']--;
- if (cnt[c - 'a'] < 0) {
- return false;
- }
- }
- return true;
- }
-
- int main() {
- string s = "anagram";
- string t = "nagaram";
- bool ans = isAnagram(s, t);
- cout << boolalpha << ans << endl;
- return 0;
- }
有效的字母异位词问题,定义一个26个字符长的数组,迭代计算s中字符的个数,如果再将t中的相同字符个数减去,结果小于0则输出 false。