兼具大小写的最好英文字母
简单题,模拟,但是字符串好恶心
class Solution {
public:
char c='!';
string greatestLetter(string s) {
unordered_map<char,int>hash;
for(int i=0;i<s.size();i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
if(hash[s[i]+32]&&s[i]>c)
{
c=s[i];
}
hash[s[i]]++;
}
else if(s[i]>='a'&&s[i]<='z')
{
if(hash[s[i]-32]&&(s[i]-32)>c)
{
c=(s[i]-32);
}
hash[s[i]]++;
}
}
if(c=='!') return "";
string ans="";
ans+=c;
return ans;
}
};
个位数字为 K 的整数之和
分析+模拟,想不到。。。废了呜呜呜
class Solution {
public:
int minimumNumbers(int num, int k) {
if(num==0) return 0;
for(int i=1;i<=num;i++)
{
int c=num-i*k;
if(c>=0&&c%10==0) return i;
}
return -1;
}
};
小于等于 K 的最长二进制子序列
class Solution {
public:
int longestSubsequence(string s, int k) {
string t;
while(k) t+=to_string(k%2),k/=2;
reverse(t.begin(),t.end());
int n=s.size(),m=t.size();
if(n<m) return n;
int res=m-1;
for(int i=0;i<n-(m-1);i++)
{
if(s[i]=='0') res++;
}
if(s.substr(n-m)<=t)
{
int cnt=0;
for(int i=0;i<n-m;i++)
{
if(s[i]=='0') cnt++;
}
res=max(res,cnt+m);
}
return res;
}
};
卖木头块
typedef long long LL;
class Solution {
public:
long long sellingWood(int n, int m, vector<vector<int>>& prices) {
vector<vector<LL>> f(n + 1, vector<LL>(m + 1));
for (auto& p: prices) {
int h = p[0], w = p[1], v = p[2];
f[h][w] = v;
}
for (int i = 1; i <= n; i ++ ) {
for (int j = 1; j <= m; j ++ ) {
for (int k = 1; k < i; k ++ ) {
f[i][j] = max(f[i][j], f[k][j] + f[i - k][j]);
}
for (int k = 1; k < j; k ++ ) {
f[i][j] = max(f[i][j], f[i][k] + f[i][j - k]);
}
}
}
return f[n][m];
}
};