题1:
链接:2309. 兼具大小写的最好英文字母 - 力扣(LeetCode)
思路:把大写字符与小写字符单独存放,把它们进行比较,再创建一个字符串存放大写字符与小写字符都存在的大写字符。最后在字符串内部比较,得到靠后的字符。
class Solution {
public:
string greatestLetter(string s){
string Ss,ss,end;
int iS=0,is=0,ie=0;
for(int i=0;i<s.length();i++)
{
if(s[i]>='a'&&s[i]<='z')
{
ss+=s[i];
}
if(s[i]>='A'&&s[i]<='Z')
{
Ss+=s[i];
}
} //把大写字符和小写字符分别存放到Ss和ss中
for(int i=0;i<Ss.length();i++)
{
for(int j=0;j<ss.length();j++)
{
if(ss[j]-32==Ss[i])
{
end+=Ss[i];
}
}
} //在Ss和ss中进行比较,把原字符串中大小字符都存在的大写字符单独存储在end字符串
string ans;
for(int i=0;i<end.size();i++){
if(ans=="") ans+=end[i];
if(ans[0]<end[i]) ans[0]=end[i];
} //在end字符串中进行比较,把靠后的大写字符存放在ans字符串中
return ans;
}
};
//PS:字符串的替换必须基于字符串的长度。要想在空字符中存储值,直接添加字符即可
题2:
链接:2310. 个位数字为 K 的整数之和 - 力扣(LeetCode)
思路:依次枚举n从1到num,如果n满足题目条件,则num减去n*k后,一定能被10整除(k是个位数)
class Solution {
public:
int minimumNumbers(int num, int k) {
if(num==0) return 0; //特殊条件num为0时,n为0
for(int n=1;n<=num;n++)
{
if((num-n*k)%10==0&&(num-n*k)>=0)
{
return n; //如果满足条件,即num-k*n后能被10整除(结果为正数的前提下)
}
}
return -1; //如果枚举n的过程中没有找到满足条件的n,则返回-1
}
};