首页 > 编程语言 >代码随想录算法训练营第五天| 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和

代码随想录算法训练营第五天| 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和

时间:2023-06-12 22:11:43浏览次数:63  
标签:10 existedCharBys 202 return existedCharByt int charItem 随想录 两数

242.有效的字母异位词 

繁冗版:

1,思路:

  先建立两个map,对应两个字符串对应的字符,同时对他们进行计数,如果这两个数字相等,那么就是相等

2,代码

 1 bool isAnagram_complicate(string s, string t) 
 2 {
 3     unordered_map<char, int> existedCharBys;
 4 
 5     for (auto charItem : s)
 6     {
 7         if (existedCharBys.find(charItem) == existedCharBys.end())
 8         {
 9             existedCharBys.insert(make_pair(charItem, 0));
10         }
11         existedCharBys[charItem]++;
12     }
13 
14     unordered_map<char, int> existedCharByt;
15 
16     for (auto charItem : t)
17     {
18         if (existedCharByt.find(charItem) == existedCharByt.end())
19         {
20             existedCharByt.insert(make_pair(charItem, 0));
21         }
22         existedCharByt[charItem]++;
23     }
24     
25     // s > t
26     if (existedCharBys.size() < existedCharByt.size())
27     {
28         swap(existedCharBys, existedCharByt);
29     }
30 
31     for (auto Item : existedCharBys)
32     {
33         if (existedCharByt[Item.first] != Item.second)
34         {
35             return false;
36         }
37     }
38 
39     return true;
40 }

简单版:

1,思路:

  因为一共有26个字母,所以只用定义一个26长度的数组,同时对一个是++,另一个是--,如果为0那么就是相等

2,代码:

 1 bool isAnagram(string s, string t)
 2 {
 3     int charItem[26] = {};
 4 
 5     // cahr 和 staring[i] 不同
 6     for (int i = 0; i < s.size(); i++) {
 7         charItem[s[i] - 'a']++;
 8     }
 9     for (int i = 0; i < t.size(); i++) {
10         charItem[t[i] - 'a']--;
11     }
12 
13     for (auto num : charItem)
14     {
15         if (num != 0)
16         {
17             return false;
18         }
19     }
20     
21     return true;
22 }
 

349. 两个数组的交集 

思路:

  1,建立一个Set,如果另一个string中有这个set,那么就把值放到set中,同时使用

  vector<int>(set.begin, set.end)进行插入

代码:

 1 vector<int> intersection(vector<int>& nums1, vector<int>& nums2) 
 2 {
 3     unordered_set<int> result;
 4     unordered_set<int> intersectSet;
 5     for (int num1 : nums1)
 6     {
 7         intersectSet.insert(num1);
 8     }
 9 
10     for (int num2 : nums2)
11     {
12         if (intersectSet.find(num2) != intersectSet.end())
13         {
14             result.insert(num2);
15         }
16     }
17 
18     return vector<int>(result.begin(), result.end());
19 }
 

202. 快乐数 

难点:

1,怎么快速把一个数字找出来它的所有位数

2,怎么判断应该结束,当前状态处于无限循环中

代码:

数字-》打散成位数:

 1 int getJudgeNum(int n)
 2 {
 3     int result = 0;
 4     while (n != 0)
 5     {
 6         result += (n % 10) * (n % 10);
 7         n = n / 10;
 8     }
 9 
10     return result;
11 }

判断快乐数

 1 bool isHappy(int n)
 2 {
 3     //先找出来 每一个位置的 数字
 4     unordered_set<int> selectedNum;
 5     while (1)
 6     {
 7 
 8         n = getJudgeNum(n);
 9         if (n == 1)
10         {
11             return true;
12         }
13         //注意循环的时候可能会相等
14         if (selectedNum.find(n) != selectedNum.end())
15         {
16             return false;
17         }
18         selectedNum.insert(n);
19     }
20 
21 }

 

标签:10,existedCharBys,202,return,existedCharByt,int,charItem,随想录,两数
From: https://www.cnblogs.com/smartisn/p/17476226.html

相关文章

  • 代码随想录day06
     第三章 哈希表part01242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词注意点:字符串长度表示方法s.length()要带括号字符串取字符s......
  • 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为
    2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。现在,给定两个正整数L和R(以字符串形式表示),返回包含在范围[L,R]中的超级回文数的数目。输入:L="4",R="1000"。输出:4。答案2023-06-12:该算法的基本思路是从较小的回文数开始......
  • 【P8819 [CSP-S 2022]】 星战 题解(图论 + 哈希)
    图论+哈希。Link.因为实在是太妙了所以写个题解。Solution因为每个点的出度都为\(1\),所以从任意一点出发永远可以走下去,故每次只需判断每个点度数是否为\(1\)即可。然后一三操作显然直接\(O(1)\)维护,\(50\pts\)。考虑二四操作。每次操作显然对点\(u\)的出度......
  • 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为
    2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。现在,给定两个正整数L和R(以字符串形式表示),返回包含在范围[L,R]中的超级回文数的数目。输入:L="4",R="1000"。输出:4。答案2023-06-12:该算法的基本思路是从较小的回......
  • UNIQUE VISION Programming Contest 2023 New Year (AtCoder Beginner Contest 287) A
    UNIQUEVISIONProgrammingContest2023NewYear(AtCoderBeginnerContest287)A-MajorityProblemStatement题意:给你n个字符串,字符串是For表示agree,字符串Against表示disagree,让你判断最终是否通过。Solution思路:统计For和Against的数量,比较一下即可。#include......
  • 2023-06-12 运行旧的rouyi前端项目报错:unknown property 'disableHostCheck'
    运行,报错ERRORValidationError:Invalidoptionsobject.DevServerhasbeeninitializedusinganoptionsobjectthatdoesnotmatchtheAPIschema.-optionshasanunknownproperty'disableHostCheck'.Thesepropertiesarevalid:......
  • 2022 360强国杯决赛Web-writeup
    Webezxunrui分析1、下载附件开始审计迅睿路由规则不过多介绍了,需要选手自行分析代码逻辑,这里只公布漏洞点。控制器在如下位置。在API控制器中。存在qrcode操作用来生成二维码,会获取略缩图参数,如图。跟进一下发现存在curl的调用,存在SSRF漏洞。2、SSRFFastCGIRCE......
  • (2023.6.12)buildroot交叉编译第三方库
    编译链没有精确到bin目录Buildroot下没有dl文件夹(编译之后才有;新的第三方库,文件夹如何命名?) 修改profile,使用build_root重新编译??(重新打包就行)新的第三方库源码如何配置编译参数?......
  • 自然资源部关于印发《公开地图内容表示规范》的通知 自然资规〔2023〕2号
    公开地图内容表示规范一、为加强地图管理,规范公开地图内容表示,维护国家主权、安全和发展利益,促进地理信息产业健康发展,服务社会公众,依据《中华人民共和国测绘法》《地图管理条例》等法律法规,制定本规范。二、公开地图或者附着地图图形产品的内容表示,应当遵守本规范。海图的内容......
  • 2023年度Linux系统安装与移除JDK保姆级教程
    简介本篇文章介绍了如何在CentOS系统上安装与移除JDK,并提供了两种不同的安装与移除方法。我们还将针对每种方法的优点和缺点进行对比前置条件在开始之前,请确保您已经在虚拟机中安装CentOS系统如果没有安装请参考我之前的VMwareWorkstation17Pro安装配置CentOS7与ssh......