力扣242. 有效的字母异位词
思路,将s串的每个字母哈希表表值++,再将t串每个字母的哈希表值--,如果是有效字母异位词,那么哈希表二十六个字母应该对应的是0.判断如果有不是0 的就返回false,否则为true
代码
bool isAnagram(string s, string t) {
if (s.size() != t.size())
{
return false;
}
unordered_map<int, int> wordMap;
for (int i = 0; i < s.size(); i++)
{
wordMap[s[i]]++;
}
for (int i = 0; i < t.size(); i++)
{
wordMap[t[i]]--;
}
for (int i = 'a'; i <= 'z'; i++)
{
if (wordMap[i] != 0)
{
return false;
}
}
return true;
}
力扣202. 快乐数
思路:挺扯的,因为题里说了,要么是1, 要么无限循环,因此用set记录每次的sum,如果sum重复了就说明进行循环了。
代码如下:
//取各位数平方和
int getSum(int n)
{
int sum = 0;
while (n)
{
sum += (n%10) * (n%10);
n /= 10;
}
return sum;
}
bool isHappy(int num)
{
unordered_set<int> happySet;
int sum = getSum(num);
while (true)
{
if (sum == 1)
{
return true;
}
if (happySet.find(sum) != happySet.end())
{
return false;
}
else
{
happySet.insert(sum);
}
sum = getSum(sum);
}
}
力扣1. 两数之和
哈希表法思路:哈希表key代表数的值,value代表下标位置。
然后如果找到了target-nums[i],返回下标i和map[target-nums[i]],否则将这数加入到哈希表里。
代码
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> numsMap;
for (int i = 0; i < nums.size(); i++)
{
if (numsMap.find(target - nums[i]) != numsMap.end())
{
return {i, numsMap[target - nums[i]]};
}
else
{
numsMap[nums[i]] = i;
}
}
return {};
}
标签:return,nums,part01,sum,day06,numsMap,int,哈希 From: https://www.cnblogs.com/xiaowangshu1/p/17700527.html