思路:找到字符串s里的所有大写字母组成新的字符串,然后再用新的字符串x去对比字符串s,如果s中有相对应的小写字母,将所有满足条件的大写字母赋给又一个新的字符串y,然后在这个字符串y中比较每个大写字母的大小,最后输出最大的那个即为题目所求
class Solution {
public:
string greatestLetter(string s) {
string x,y;
for(int i=0;i<s.size();i++){
if(s[i]>='A'&&s[i]<='Z') x+=s[i];
}//将字符串s中所有大写字母存在字符串x中
for(int i=0;i<x.size();i++){
for(int j=0;j<s.size();j++){
if(x[i]+32==s[j]+0) y+=x[i];
}
}//将字符串x和字符串s中的小写字符对比 如果有一样的就把大写字母存入字符串y
cout<<x<<endl;
cout<<y<<endl;
string t="";
for(int i=0;i<y.size();i++){
if(t=="") t+=y[0];
if(t[0]<y[i]) t[0]=y[i];
}//比较字符串y中大的字母存入t
return t;
}
};
//PS:字符串的替换必须基于字符串的长度。要想在空字符中存储值,直接添加字符即可
思路:从题目中很容易得出当num==0时直接返回0,而且当k为偶数,而num为奇数数,必定不存在符合题意的多重数集,直接返回-1,如果num<k必定不满足条件,直接返回-1;枚举i从1到num,如果满足(num-i*k)%10==0且在(num-i*k)>=0的条件,则i即为题目所求,直接返回i,如果枚举结束还没有满足条件的i即返回-1
class Solution {
public:
int minimumNumbers(int num, int k) {
if(num==0) return 0;//限定条件
if(num%2!=0&&k%2==0) return -1;//限定条件
if(num<k) return -1;//限定条件
for(int i=1;i<=num;i++){
if((num-i*k)%10==0&&(num-i*k)>=0) return i;//判断条件
}
return -1;//不满足则返回-1
}
};