原文链接 [每日 LeetCode] 242. Valid Anagram
Description:
Given two strings s and t , write a function to determine if t is an anagram of s.
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
思路:本题要求验证两个字符串是不是同字母异序。可以使用 map 但是这里可以用 cache 数组来替代 map 功能,因为只涉及到小写字母且数量有限。首先判断两个字符串的长度是否相等,然后依次遍历 s 和 t 字符串并做好标记,最后判断 cache 中的数值即可。
C++ 代码
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size() != t.size())
return false;
int cache[26] = {0};
for(int i=0; i<s.size(); i++) {
cache[s[i]-'a']++;
cache[t[i]-'a']--;
}
for(int i=0; i<26; i++) {
if(cache[i] != 0)
return false;
}
return true;
}
};
运行时间:8ms
运行内存:9.3M
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于