有效字母的异位词
这个代码很好理解的 ,主要在于读懂题意
#include<iostream>
using namespace std;
#include<string>
const int ma_x = 50000;
int main()
{
string s1, s2;
cin >> s1 >> s2;
int arr[ma_x] = { 0 }; //这个其实就26个字母 别多想
for (int i = 0; i < s1.size(); i++)
{
arr[s1[i] - 'a']++;//这个地方不是减0
}
for (int i = 0; i < s2.size(); i++)
{
arr[s2[i] - 'a']--;
}
for (int i = 0; i < s1.size(); i++)
{
if (arr[i] != 0)
{
cout << "no";
return 0;
}
}
cout << "yes";
return 0;
}
查找常用字符
对于这道题,如果我们先已知这个是查找两个字符,那么我们就可以像上一道题,一个加加,一个减减,但是这道题与众不同,就在于我们不知道这个字符容器里面到底有几个字符串,所以我们选择的是先对于第一个字符串中的每一个字符进行统计,然后再利用min求小的的值。
#include<iostream>
using namespace std;
#include<vector>
#include<string >
void chazhao(vector<string>s)
{
int hash[26] = { 0 };
for (int i = 0; i < s[0].size(); i++)
{
hash[s[0][i] - 'a']++;
}
for (int i = 1; i < s.size(); i++)
{
int hashtwo[26] = { 0 };
for (int j = 0; j < s[i].size(); j++)
{
hashtwo[s[i][j] - 'a']++;
}
for (int k = 0; k < 26; k++)
{
hash[k] = min(hash[k], hashtwo[k]);
}
}
for (int k = 0; k < 26; k++)
{
if (hash[k] > 0)
{
cout << char(k + 'a') << " ";
}
}
}
int main()
{
vector<string>s;
int n;
cin >> n;
for (int i=0;i<n;i++)
{
string s1;
cin >> s1;
s.push_back(s1);
}
chazhao(s);
}
两个数组的交集
一下这个代码通俗易懂,好理解。
#include<iostream>
#include<unordered_set>
using namespace std;
int main()
{
int n;
cin >> n;
unordered_set<int>u, v,z;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
u.insert(num);
}
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
v.insert(num);
}
for (int i : u)
{
if (v.find(i) != v.end())
{
z.insert(i);
}
}
for (int num:z)
{
cout << num << " ";
}
}
快乐数
最重要的点就是我们如何来判断这个循环是否能结束,什么时候结束。
这个点就在于这个数不能来回反复出现
#include<iostream>
#include<unordered_set>
using namespace std;
int sum(int n)
{
int sum = 0;
while (n)
{
sum += (n % 10) * (n % 10);
n = n / 10;
}
return sum;
}
bool panduan(int n)
{
unordered_set<int>u;
while (1)
{
if (sum(n) == 1)
{
return true;
}
if (u.find(sum(n)) != u.end())
{
return false;
}
else
{
u.insert(sum(n));
}
n = sum(n);
}
}
int main()
{
int n;
cin >> n;
cout<<panduan(n);
}
两数之和
以下这个代码是错误的,如果想要听见具体讲解来我的小红书直播吧!
#include<iostream>
#include<unordered_map>
using namespace std;
void chazhao_he(int target,unordered_map<int,int>u)
{
int n = u.size();
for (int i = 0; i < n; i++)
{
//cout << u[i] << endl;
auto it = u.find(target - u[i]);
if (it != u.end())
{
cout << it->second<< " " << i;
// cout << endl << it->second << endl;
return;
}
}
cout << "no";
return;
}
int main()
{
unordered_map<int, int>u;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
u.insert({ num,i });
}
chazhao_he(9, u);
}
以下这个是正确答案
#include<iostream>
using namespace std;
#include<unordered_map>
void zhao(int arr[5 ], int target)
{
unordered_map<int, int>u;
for (int i = 0; i < 5; i++)
{
auto it = u.find(target - arr[i]);
if (it != u.end())
{
cout << it->second << " " << i;
return;
}
else
{
u.insert({ arr[i],i });
}
}
cout << "no";
return;
}
int main()
{
//int n;
int arr[5];
//cin >> n;
for (int i = 0; i < 5; i++)
{
int num;
cin >> num;
arr[i] = num;
}
zhao(arr, 9);
}
欢迎大家来到我的小红书直播