242
class Solution {
public:
bool isAnagram(string s, string t) {
int a[26] = {0};
if (s.length()!= t.length()) {
return false;
}
for (int i=0; i<s.length(); i++) {
int index1 = s[i]-'a';
a[index1]++;
int index2 = t[i]-'a';
a[index2]--;
}
for (int j=0; j<26; j++) {
if (a[j]!=0) {
return false;
}
}
return true;
}
};
因为只有26个字母,所以用一个数组来记录。
349
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> set1(nums1.begin(), nums1.end());
unordered_set<int> set2(nums2.begin(), nums2.end());
vector<int> res;
for (int i:set1) {
if (set2.find(i)!= set2.end()) {
res.push_back(i);
}
}
return res;
}
};
总结:unordered_set要熟练使用,赋值,查找,插入。
202
class Solution {
public:
int get_sum (int n) {
int sum = 0;
while (n>=10) {
sum += pow(n%10, 2);
n = n/10;
}
sum+=pow(n,2);
return sum;
}
bool isHappy(int n) {
int sum = get_sum(n);
unordered_set<int> set;
while (true) {
if (sum == 1) {
return true;
}
if (set.find(sum) != set.end()) {
return false;
}
set.insert(sum);
sum = get_sum(sum);
}
}
};
sum重复表示不是快乐数,用一个unordered_set记录。
1
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map <int, int> m;
vector<int> res;
for (int i=0; i<nums.size(); i++) {
if (m.find(nums[i])!=m.end()) {
res.push_back(m[nums[i]]);
res.push_back(i);
return res;
}
int key = target-nums[i];
m[key] = i;
}
return res;
}
};
终于记得两数之和怎么做了。。。