题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意: 若 s 和 t中每个字符出现的次数都相同,则称 s 和 t互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
C++代码
cpp
#include <iostream>
#include <vector>
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。