- 题目四
- 题目:有效的字母异位词
- C++源程序:
- 个人心得:
- 涉及知识:
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn96us/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:
若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
==进阶: ==
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
相关标签
哈希表
字符串
排序
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size() != t.size()){
return false;
}
else{
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s==t;
}
}
};
个人心得:
首先这道题第一个题解关键点在于,两个字符串的个数必须是相同的,即length必须相等,否则无法构成异位词。
二在于当长度相等之后,每个出现的字母的个数都必须相同,否则无法构成。
那么我可以使用sort排序算法来讲两个字符串重新排序,排好序之后比对两个字符串,只有当完全相等的时候,才能构成异位词,返回true。
- 字符串数组:
string字符串在分配内存的时候,其首地址和数组的首地址一样处理,所以可以将string看成一个数组。 - s.size() 和 s.length()
求长度的函数 很简单。 - sort排序规则
sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,如果没有的话,默认以非降序排序。



