题目1:
2259. 移除指定数字得到的最大结果
?[可运行]最直观的想法:将字符串中等于digit的位置对应字符删除,并将结果都存入一个res中,通过排序找出删除字符后值最大的字符串。
class Solution {
public:
string removeDigit(string number, char digit) {
vector<string> res;
for(int i = 0; i < number.size(); i ++)
if(number[i] == digit){
string tmp = number;
tmp.erase(i,1);
res.push_back(tmp);
}
sort(res.begin(), res.end());
return res[res.size()-1];
}
};
题目2:
2260. 必须拿起的最小连续卡牌数
?
题目3:
2261. 含最多 K 个可整除元素的子数组
?
题目4:
2262. 字符串的总引力 ?
?[超时]直观的想法,穷举所有可能的字符串,然后统计求和每个字符串中的引力。果不其然,遇到很长的字符串会超时。
class Solution {
public:
long long appealSum(string s) {
long long count = 0;
for(int i = 0; i < s.size(); i ++)
for(int j = 1; j <= s.size() - i; j ++){
//穷举所有子字符串
string tmp = s.substr(i, j);
//求和引力
count += theNumOfCharacters(tmp);
}
return count;
}
//统计字符串中出现的不同字符的个数
int theNumOfCharacters(string& s){
int count = 0;
bool arr[26] = {0};
for(int i = 0; i < s.size(); i ++) arr[s[i] - 'a'] = true;
for(int i = 0; i < 26; i ++) count += arr[i];
return count;
}
};
|