leetcode 242. Valid Anagram | Map
来源:互联网 发布:神代利世cos淘宝 编辑:程序博客网 时间:2024/06/05 03:02
# Description
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
# My solution
基本思路是利用dict思想, 统计每个单词出现次数, 最后对两次统计的进行对照.
```
class Solution {
public:
bool isAnagram(string s, string t) {
int ds[26] = {0};
int dt[26] = {0};
for (int i = 0; i < s.size(); i++) {
ds[s[i] - 'a']++;
}
for (int i = 0; i < t.size(); i++) {
dt[t[i] - 'a']++;
}
for (int i = 0; i < 26; i++) {
if (ds[i] != dt[i]) return false;
}
return true;
}
};
```
# Discuss
基本思想一致, 但是更节省内存的一种方式. 有点像多数投票问题中的解决方案, 在同一个统计数组++--, 最后判断是否每个位置为0即可.
```
class Solution {public: bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int n = s.length(); int counts[26] = {0}; for (int i = 0; i < n; i++) { counts[s[i] - 'a']++; counts[t[i] - 'a']--; } for (int i = 0; i < 26; i++) if (counts[i]) return false; return true; }};
```
注意到c++中map的用法(对比于python dict), 网友的一种方案如下:
```
class Solution {public: bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int n = s.length(); unordered_map<char, int> counts; for (int i = 0; i < n; i++) { counts[s[i]]++; counts[t[i]]--; } for (auto count : counts) if (count.second) return false; return true; }};
```
# Reference
- [leetcode 242](https://leetcode.com/problems/valid-anagram/description/)
- [std::unordered_map](http://www.cplusplus.com/reference/unordered_map/unordered_map/)
- leetcode 242. Valid Anagram | Map
- LeetCode 242. Valid Anagram (map使用)
- [leetcode] 242.Valid Anagram
- leetcode 242. Valid Anagram
- [leetcode] 242. Valid Anagram
- leetCode 242. Valid Anagram
- Leetcode 242. Valid Anagram
- 242. Valid Anagram LeetCode
- LeetCode 242. Valid Anagram
- LeetCode 242. Valid Anagram
- [LeetCode]242. Valid Anagram
- 【LeetCode】242. Valid Anagram
- leetcode 242. Valid Anagram
- leetcode 242. Valid Anagram
- LeetCode--242. Valid Anagram
- LeetCode *** 242. Valid Anagram
- #leetcode#242. Valid Anagram
- leetcode 242. Valid Anagram
- Mybatis分页和Spring的集成,强大简单易上手
- 线性回归详解
- Ubuntu分区学习
- Weak Pair HDU
- 剑指Offer—44—翻转单词顺序列
- leetcode 242. Valid Anagram | Map
- 百度ueditor使用遇到问题
- 七夕程序猿来搞事情啦!如何用程序谈情说爱
- 查找命令(4)——whereis
- SQL 知识及用法备忘录
- 宏定义
- 再谈volatile关键字
- linux(一)之linux简介
- hadoop-wordcount