2351.第一个出现两次的字母
例如:
输入:s = “abccbaacz”
输出:“c”
输入:s = “abcdd”
输出:“d”
方法一:哈希表
class Solution {
public:
int arr[26]; //对应二十六个字母
char repeatedCharacter(string s) {
// 初始化映射数组
for(auto &i:arr)arr[i]=0;
//直接返回第一个出现两次的字母
for(int i=0;i<s.size();i++){
if(++arr[s[i]-97]==2)return s[i];
}
return '\0';
}
};
方法二:状态码或位运算的应用
//用26位二进制可以表示26种状态,而int为32个bit(4字节),可以存储
class Solution {
public:
char repeatedCharacter(string s) {
int mask = 0;
for(char c:s){
if(mask & 1<<(c-97))return c; //出现一样,返回
mask |= 1<<(c-97); //加入当前状态码中
}
return '\0';
}
};