【leetcode2309】兼具大小写的最好英文字母
leetcode极简笔记,主要记录自己写的辣鸡代码
该题可以用位运算,int类型在C语言中占4个字节,即32个二进制位,用来记录26位字母是足够的
目录
unordered_set
class Solution {
public:
string greatestLetter(string s) {
unordered_set<char> ss(s.begin(),s.end());
for(int i=25;i>=0;i--){
if(ss.count('a'+i)>0 && ss.count('A'+i)>0){
return string(1,'A'+i);
}
}
return "";
}
};
位运算
class Solution {
public:
string greatestLetter(string s) {
int lower=0,upper=0;
for(int i=0;i<s.size();i++){
if(islower(s[i])){
lower=lower | (1<<(s[i]-'a'));
}
else{
upper=upper | (1<<(s[i]-'A'));
}
}
lower=lower&upper;
for(int i=25;i>=0;i--){
if((lower&(1<<i)) >0){
return string(1,'A'+i);
}
}
return "";
}
};