第一题
建立哈希表,然后遍历,返回第一个出现两次的字母。
class Solution {
public:
char repeatedCharacter(string s) {
char aa = '0';
unordered_map<int, int> h;
for(auto a : s)
{
++h[a];
if(h[a] > 1)return a;
}
return aa;
}
};
第二题
先创建两个哈希表,再分别记录数组横的字符串和纵的字符串,再对比两个哈希表,返回表中相等的次数
class Solution {
public:
int equalPairs(vector<vector<int>>& grid) {
int n=grid.size();
vector<string>row(n);
vector<string>col(n);
for(int i = 0 ; i < n ; ++ i)
{
string s;
for(int j = 0 ; j < n ; ++ j) s += grid[i][j] + '0';
row[i] = s;
}
for(int i = 0 ; i < n ; ++ i)
{
string s;
for(int j = 0 ; j < n ; ++ j) s += grid[j][i] + '0';
col[i] = s;
}
int res = 0;
for(int i = 0 ; i < n ; ++ i)
{
for(int j = 0 ; j < n ; ++ j)
{
if(row[i] == col[j]) ++ res;
}
}
return res;
}
};